HttpApplication类和IHttpModule有什么区别?

时间:2011-01-31 10:56:37

标签: asp.net

HttpApplication类和IHttpModule有什么区别?它们是相同还是不同?

我看到两个类中都提到相同事件的文章。

4 个答案:

答案 0 :(得分:2)

HttpApplication是在其中注册了多个IHttpModule个实例的Web应用程序实例。这就是每个IHttpModule实例处理应用程序执行的某个部分的原因,因此通常可以在许多应用程序上重用(考虑Session处理模块或身份验证模块)。

在应用/请求处理方面,有许多相似之处。 HttpApplication可以访问应用级事件,例如 OnStart OnEnd 等以及 OnBeginRequest 等请求级事件, OnEndRequest 等。IHttpModule只能访问请求级事件。

  

附加说明:即使使用IHttpModule也可以处理应用程序的开始和结束事件,但这是一个未记录的功能,您必须采取一些特殊的预防措施。查看这两篇博文,深入解释这一点:
  Writing a custom IHttpModule that handles Application_OnStart event
  How to correctly use IHttpModule to handle Application_OnStart event

我建议你阅读一下应用程序生命周期执行管道:

答案 1 :(得分:0)

除了HttpModules允许您从应用程序的其余部分中删除或分离事件的处理之外,没有任何重大区别。这有助于代码重用,特别是跨应用程序 此外,使用此技术,您可以将HttpModules添加到您的应用程序中,而无需更改任何现有的源代码(例如Elmah)以提供额外的功能。

答案 2 :(得分:0)

http://aspalliance.com/442_Introducing_HTTPModules.all

有助于您理解HttpModules和HttpApplications如何协同工作的好文章。

答案 3 :(得分:0)

IHttpModule是一个托管请求处理程序,这意味着为请求实现“捕获” 生命周期。

HttpApplication代表Web服务器(IIS)ASP.NET应用程序。对,它有事件和其他 在HTTP模块的上下文中需要的成员。

如果需要实现处理某些输入数据的自定义方式,则可以开发HTTP模块 由一些HTTP请求给出。显然,这可能需要您访问HTTP应用程序,即 暴露请求生命周期事件的那个。

摘要是HTTP模块是HTTP应用程序的观察者,可以实现逻辑 以HTTP应用程序发出ASP.NET基础结构的每一步信号的方式处理HTTP请求 生命周期。