日期:2014-05-18  浏览次数:20453 次

IHttpModule和Global.asax中事件是一回事吗?
如题。

利用IHttpModule实现一个HttpModule中写的一些事件

与直接写在Global.asax中直接写这些事件是一个效果吗?

------解决方案--------------------
嗯,区别不大,都会执行
------解决方案--------------------
http://www.cnblogs.com/goody9807/archive/2006/12/25/603051.html
------解决方案--------------------
都上升到应用程序级事件,我觉得相差不大
------解决方案--------------------
引自msdn:

HTTP 模块与 Global.asax 文件
可以在应用程序的 Global.asax 文件中实现模块的许多功能,这使您可以响应应用程序事件。但是,模块相对于 Global.asax 文件具有如下优点:模块可以进行封装,因此可以在创建一次后在许多不同的应用程序中使用。通过将它们添加到全局程序集缓存 (GAC) 并将它们注册到 Machine.config 文件中,可以跨应用程序重新使用它们。有关更多信息,请参见全局程序集缓存。

但是,使用 Global.asax 文件有一个好处,那就是您可以将代码放在其他已注册的模块事件(如 Session_Start 和 Session_End 方法)中。此外,Global.asax 文件还允许您实例化可在整个应用程序中使用的全局对象。

当您需要创建依赖应用程序事件的代码并且希望在其他应用程序中重用模块时,或者不希望将复杂代码放在 Global.asax 文件中时,应当使用模块。当您需要创建依赖应用程序事件的代码但不需要跨应用程序重用它时,或者需要订阅不可用于模块的事件(如 Session_Start)时,应当将代码放在 Global.asax 文件中。