代码之家  ›  专栏  ›  技术社区  ›  UpTheCreek

ASP.NET:这个httpmodule做什么?system.serviceModel.activation.http模块

  •  8
  • UpTheCreek  · 技术社区  · 14 年前

    有人能告诉我这个httpmodule的用途吗?它出现在我的httpmoduleCollection列表上,但我不知道它是用来做什么的。

    System.ServiceModel.Activation.HttpModule
    

    我在上面找不到任何文件。

    3 回复  |  直到 14 年前
        1
  •  11
  •   Community ahmed    7 年前

    System.ServiceModel.Activation.HttpModule 因为您安装了“微软.NETFramework 3.5.1”/“Windows通信基础HTTP激活”功能。如果不需要该功能,可以卸载它,从web.config中删除该模块。加载的未使用模块越少,运行Web应用程序的速度就越快。

    如果安装此功能 之后 在服务器上安装.NET 4 Framework时,您可能会收到中描述的问题。 http://blogs.iis.net/webtopics/archive/2010/04/28/system-typeloadexception-for-system-servicemodel-activation-httpmodule-in-asp-net-4.aspx .

    通常,对每个请求调用HTTP模块以响应BeginRequest()和EndRequest()事件。因此,模块在处理请求之前和之后运行。在“HTTP模块如何工作”一节中, http://msdn.microsoft.com/en-us/library/bb398986(v=VS.100).aspx 您可以阅读更多关于HTTP模块的信息。

    http://msdn.microsoft.com/en-us/library/ms227673.aspx 描述如何创建自定义HTTP模块。一些小的自定义模块非常有用。例如,您可以阅读 How to remove the ".svc" extension in RESTful WCF service? 一个代码示例(源于“restful.net”一书,第5章,第96页)“从wcf rest urls中删除.svc扩展名”。在 http://www.west-wind.com/weblog/posts/570695.aspx 您可以阅读“IIS7重写模块”的相关内容。

    关于HTTP模块的一般信息不是您问题的一部分,但我插入它是为了更好地理解 Activation.HttpModule 做,以及你可以使用或自己编写的其他更有用的模块。

        2
  •  4
  •   David Ebbo    14 年前

    这个模块允许 WCF (Windows通信基础)服务工作(从.NETFramework 3开始)。

    你可以放心地忽略它,它不应该引起麻烦。如果您真的想摆脱它,您可以从根web.config文件中删除它(例如 \ windows\microsoft.net\framework\v4.0.30319\config\web.config)。但我建议把它留在那里,以防你在某个时候需要WCF。

        3
  •  -3
  •   Preet Sangha    14 年前

    HTTP模块是每次Web应用程序收到请求时调用的.NET程序集。这是ASP.NET提供的将.NET Web应用程序代码连接到IIS Web基础结构的标准代码。

    here for an explanation .

    HTTP模块

    HTTP模块是一个程序集, 每次提出请求时都调用 到您的应用程序。HTTP模块是 作为请求管道的一部分调用 并且可以访问生命周期事件 在整个请求过程中。HTTP模块 所以让你检查一下 请求并根据 请求。他们也让你检查 传出响应并修改它。

    在IIS 6.0中,ASP.NET请求 管道与Web分离 服务器请求管道。在IIS 7中, ASP.NET请求管道和 Web服务器请求管道可以 集成到公共请求中 管道。在IIS 7.0中,这是引用的 作为集成模式。统一的 Pipeline有几个好处 ASP.NET开发人员。例如,它 让托管代码模块接收 所有管道通知 请求,即使请求不是 对于ASP.NET资源。但是,如果你 如果需要,可以在Classic中运行IIS 7.0 模式,模拟ASP.NET运行 在IIS 6中。有关详细信息,请参阅 ASP.NET应用程序生命周期 IIS 7.0概述。

    ASP.NET HTTP模块类似于ISAPI 因为它们被调用 所有请求。然而,他们是 以托管代码编写,并且 与 ASP.NET应用程序。你可以放 自定义模块源代码 应用程序的“代码”文件夹, 或者您可以放置已编译的自定义模块 作为程序集位于 应用。

    ASP.NET使用模块来实现 各种应用功能,其中 包括窗体身份验证, 缓存、会话状态和客户端 脚本服务。在每种情况下,当 这些服务已启用,模块 作为请求的一部分调用,并且 执行不在 任何单页请求的范围。 模块可以使用应用程序事件 并且可以引发 在global.asax文件中处理。为了 有关应用程序的详细信息 事件,请参见ASP.NET应用程序生命周期 IIS 5.0和6.0以及 ASP.NET应用程序生命周期 IIS 7.0概述。