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 中)。本文很好地解释了它,并提供了 Response.End 的替代方案,以防它是您调用 Server.Transfer 的副作用。

于 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 回答