我的Web应用程序中有一个HttpApplication(Global.asax),我使用它来捕获和记录未处理的异常并设置WebFormURLRouting。这一切都有效,但我想将此代码移到我的应用程序框架中(即不在Global.asax.cs中)
我刚刚尝试在框架中创建一个HttpApplication类,但似乎我无法覆盖事件?无论如何,我相信我可以使用HttpModule代替使用这些事件,这样做:
1)完全消除对Global.asax的需求?
2)这种效果如何扩展,即最终在Web场上运行应用程序
3)我有HttpHandlers来处理文件上传和文件下载等其他内容,是否应该使用多少HttpModule / HttpHandler,或者是否应该以某种方式组合以减少开销?
赞赏任何评论
答案 0 :(得分:3)
在HTTP模块中监听您从Global.asax中了解的事件,就像在模块的Init方法中连接到HttpApplication实例的事件一样简单。你不能覆盖HttpApplication的方法,你应该听它的事件。
至于你的其他问题: 1)是的,在我的许多Web项目中,我们不使用Global.asax
2)这实际上不会影响扩展。对于服务器场中的每个Web服务器,您需要正确连接HTTPModule。但是因为这是在web.config中完成的,所以它应该已经存在了。
3)简答:否。对于httphandlers,它们是根据传入的http请求文件扩展名和/或路径和HTTP方法选择和运行的。在选择特定处理程序成为性能问题之前,您确实需要很多。对于HttpModules,您可以选择在每个请求中运行一些代码,显然,如果该代码需要时间运行,则会影响性能。但是,您的代码需要花费时间,而不是通过http模块运行它。
答案 1 :(得分:1)
您可以在框架中创建Application类,并在每个应用程序中从继承创建。所以你将拥有框架中的所有句柄 答案: