C# ASP.NET HttpModules : HttpApplication Events

标签 c# asp.net httpmodule httpapplication

我的 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/

相关文章:

c# - 在单个 Web API 方法上弃用多个路由中的特定路由

c# - 没有 Mac 的 Xamarin Visual Studio IOS 开发?

asp.net - ASP.NET 4 中仍然需要 App_Browsers 文件夹吗?

asp.net - IIS模块dll文件放在哪里?

asp.net - 如何为Asp.Net中的所有子文件夹注册HttpHandler?

c# - 如何围绕 Random.Next() 限制进行设计?

c# - 查看NLog中是否发生日志事件

c# - 如何在 gridview asp.net 中显示百分号

c# - ZipArchive 返回空文件 c#

c# - HttpModule 与 DelegatingHandler - 优点/缺点?