我的 Web 应用程序中有一个 HttpApplication (Global.asax),我用它来捕获和记录未处理的异常并设置 WebFormURLRouting。这一切都有效,但是我想将这段代码移动到我的应用程序框架中,(即不在 Global.asax.cs 中)
我刚刚尝试在框架中创建一个 HttpApplication 类,但我似乎无法覆盖事件?无论如何,我相信我可以使用 HttpModule 来代替使用这些事件,这样做:
1) 完全消除对 Global.asax 的需求?
2) 这如何影响扩展,即最终在网络场上运行应用程序
3) 我有 HttpHandlers 来处理文件上传和文件下载等其他事情,应该使用多少 HttpModule/HttpHandlers 是否有限制,或者是否应该以某种方式组合它们以减少开销?
感谢任何评论
最佳答案
在 HTTP 模块中监听您从 Global.asax 知道的事件就像在模块的 Init 方法中连接到 HttpApplication 实例的事件一样简单。您不能覆盖 HttpApplication 的方法,您应该监听它的事件。
关于您的其他问题: 1) 是的,在我的许多 Web 项目中,我们不使用 Global.asax
2) 这并不真正影响放大。对于场中的每个 Web 服务器,您需要正确连接 HTTPModule。但由于这是在 web.config 中完成的,所以它应该已经存在了。
3) 简短回答:否。对于 httphandlers,它们是根据传入的 http 请求文件扩展名和/或路径以及 HTTP 方法来选择和运行的。在特定处理程序的选择成为性能问题之前,您确实需要很多这些。对于 HttpModules,您可以选择在每次请求时运行一些代码,显然,如果该代码需要时间来运行,将会影响性能。但是需要时间的是您的代码,而不是它是通过 http 模块运行的。
关于C# ASP.NET HttpModules : HttpApplication Events,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1283793/