4

基本的に、ASP.NET HttpModule に次の (疑似コード) を記述しようとしています。

*pre-code*
try { handler.ProcessRequest(...) }
catch (Exception) { *error-code* }
finally { *post-code* }

「プリコード」の場合は HttpModule.PreExecuteHandler に、「エラーコード」の場合は .Error にフックできることがわかりました。しかし、 PostExecuteHandler は確実に実行されていないようです。

BeginRequest と EndRequest は確実に実行されますが、記述する必要があるコードには時期尚早です。実行するために選択されたハンドラーを検査する必要があります。ハンドラーは、BeginRequest の後まで選択されません。

この種のラッパーを作成するためのベスト プラクティスはありますか?

ありがとう!

4

2 に答える 2

3

Response.End を呼び出さない以外に、(少なくとも HttpModule では) やりたいことを実行する方法はありません。この記事では、それについてかなり詳しく説明し、Server.Transfer を呼び出したことによる副作用である場合に備えて、Response.End の代替手段を提供します。

于 2008-11-17T18:00:31.887 に答える
-2

これを Global.asax ファイルに追加します。

protected void Application_PreRequestHandlerExecute(object sender, EventArgs e)
{
    //
}

protected void Application_PostRequestHandlerExecute(object sender, EventArgs e)
{
    //
}

それは100%うまくいくはずです。

于 2008-11-15T17:45:06.460 に答える