2010-05-31 26 views

回答

11

System.ServiceModel.Activation.HttpModule来自因为您安装了“Microsoft .NET Framework 3.5.1”/“Windows Communication Foundation HTTP激活”功能。如果你不需要这个功能,你可以卸载它从web.config中移除该模块。您加载的未使用模块越少,运行Web应用程序的速度就越快。

如果您在之后安装此功能在服务器上安装.NET 4框架,您可能会收到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://msdn.microsoft.com/en-us/library/bb398986(v=VS.100).aspx的“HTTP模块如何工作”一节中,您可以阅读有关HTTP模块的更多信息。

http://msdn.microsoft.com/en-us/library/ms227673.aspx描述了如何创建自定义HTTP模块。一些小的自定义模块可能会非常有用。例如,您可以在How to remove the ".svc" extension in RESTful WCF service?中阅读代码示例(源自“RESTful .NET”一书,第96页第5章)“从WCF REST URL中删除.SVC扩展”。在http://www.west-wind.com/weblog/posts/570695.aspx中,您可以阅读如何在“IIS 7重写模块”方面做同样的事情。

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

-2

http模块是一个.net程序集,每当您的Web应用程序收到请求时都会调用该程序集。这是asp.net提供的标准版本,它将.net Web应用程序代码连接到IIS Web基础结构。

请参阅here for an explanation

HTTP模块

HTTP模块是一个组件是 上调用了由 到你的应用的每个请求。 HTTP模块是 ,称为请求管道 的一部分,并可在整个请求期间访问生命周期事件 。 HTTP模块 因此可让您检查传入的 请求并根据 请求采取行动。他们还可以让您检查传出响应并对其进行修改。

在IIS 6.0中,ASP.NET请求 管道与Web 服务器请求管道分开。在IIS 7.0, 中,ASP.NET请求管道和 Web服务器请求管道可以将 集成到一个通用请求中,管道为 。在IIS 7.0中,这被称为 为集成模式。统一的 管道为ASP.NET开发人员提供了几个好处。例如,即使请求不是 (对于ASP.NET资源),它也允许托管代码模块接收所有 请求的流水线通知,即 。但是,如果您需要 ,则可以在经典 模式下运行IIS 7.0,该模式模拟在IIS 6.0中运行 的ASP.NET。有关更多信息,请参阅 ASP.NET应用程序生命周期 IIS 7.0概述。

ASP.NET HTTP模块与ISAPI 筛选器类似,因为它们是针对所有请求调用的 。但是,它们是用托管代码编写的 ,并且完全与 ASP.NET应用程序的生命周期集成在一起。您可以将 定制模块源代码放入应用程序的 App_Code文件夹中,或者将编译后的定制模块 作为程序集放入 应用程序的Bin文件夹中。

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

+0

我知道什么是Http模块,只是不是这个。你能否更详细地解释你的意思是“将你的.net web应用程序代码连接到IIS Web基础结构”。对我来说这似乎很奇怪,这将作为一个http模块来实现 - 如果这是它的作用,它几乎不是可选的。 – UpTheCreek 2010-05-31 09:06:15

+0

您引用的文本是关于httpmodules的一般 - 我的问题是关于一个特定的模块。 – UpTheCreek 2010-05-31 09:10:15

4

该模块允许WCF(Windows Communication Foundation)服务工作(以.net Framework 3.0开始)。

你可以放心地忽略它,它不应该引起麻烦。如果你真的想摆脱它,你可以从你的根web.config文件中删除它(例如在 \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Config \ web.config中)。但我建议将它留在那里以防万一你需要WCF。