基本上,我试图在 ASP.NET HttpModule 中编写以下(伪代码):
*pre-code*
try { handler.ProcessRequest(...) }
catch (Exception) { *error-code* }
finally { *post-code* }
我发现我可以将 HttpModule.PreExecuteHandler 挂接到“pre-code”和“error-code”的 .Error 中。但 PostExecuteHandler 似乎并没有可靠地运行。
BeginRequest 和 EndRequest 运行可靠,但对于我需要编写的代码来说太早了,这需要检查选择执行的处理程序。直到 BeginRequest 之后才会选择处理程序。
是否有编写这种包装器的最佳实践?
谢谢!
最佳答案
除了不调用 Response.End 之外,没有办法做你想做的事(至少在 HttpModule 中)。 This article 很好地解释了它,并提供了 Response.End 的替代方案,以防它是您调用 Server.Transfer 的副作用。
关于c# - ASP.NET HttpModule - 保证执行前后处理程序代码?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/289432/