我有一個簡單IHttpModule
:如何註冊一個適用於VS2012 Cassini和IIS7的HttpModule?
using System;
using System.Web;
namespace DummyPlaceholder
{
class PerformanceHttpModule : IHttpModule
{
public void Init(HttpApplication application)
{
}
public void Dispose()
{
}
}
}
你註冊的HttpModules內web.config
:
<configuration>
<system.web>
<httpModules>
<add name="PerformanceHttpModule" type="DummyPlaceholder.PerformanceHttpModule"/>
</httpModules>
</system.web>
</configuration>
當我發展,我的Visual Studio 2012中進行本地測試集成( 「卡西尼」 號)網絡服務器,一切都很好。
當是時候部署到現場IIS7 Web服務器,該服務器將give a 500 Internal Server Error, and absolutely no information about the cause anywhere.
的問題是,IIS7改變了你註冊的HttpModules,你不再使用system.web
,而不是你現在必須使用system.webServer
:
<configuration>
<system.webServer>
<modules>
<add name="PerformanceHttpModule" type="DummyPlaceholder.PerformanceHttpModule"/>
</modules>
</system.webServer>
</configuration>
而現在,在IIS上工作,但在Visual Studio中不起作用2012
我需要的是一個解決方案可以在兩者中使用,而不必在發佈文件時修改web.config
文件。
問題是,IIS7和更新,有一個新的「集成」模式。替代模式是IIS6的行爲,稱爲「經典」模式。
很顯然,我需要把Visual Studio集成的Web服務器爲「集成」模式,使之看:
configuration/webServer/modules
的模塊。
我該怎麼做?
獎金閱讀
- "500 Internal Server Error" when adding HttpModule in my Website?
- Not understanding IIS Classic and Integrated Mode?
- Debugging with VS 2010 in IIS 7 classic pipeline
- HTTP handlers in IIS6 or IIS7 classic mode