基本上,我正在尝试在ASP.NET HttpModule中编写以下(伪代码):
*pre-code*
try { handler.ProcessRequest(...) }
catch (Exception) { *error-code* }
finally { *post-code* }
我发现我可以为“pre-code”挂钩HttpModule.PreExecuteHandler,为“错误代码”挂钩.Error。但PostExecuteHandler似乎没有可靠运行。
BeginRequest和EndRequest运行可靠,但对于我需要编写的代码来说太早了,这需要检查选择执行的处理程序。直到BeginRequest之后才选择处理程序。
编写这种包装器是否有最好的做法?
谢谢!
答案 0 :(得分:2)
除了不调用Response.End之外,没有办法做你想要的(至少在HttpModule中)。 This article很好地解释了它并提供了Response.End的替代方法,以防它被称为Server.Transfer的副作用。
答案 1 :(得分:-2)
将此添加到您的Global.asax文件中:
protected void Application_PreRequestHandlerExecute(object sender, EventArgs e)
{
//
}
protected void Application_PostRequestHandlerExecute(object sender, EventArgs e)
{
//
}
这应该100%工作。