2010-05-31 55 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。