我有一个简单的IHttpModule
:
using System;
using System.Web;
namespace DummyPlaceholder
{
class PerformanceHttpModule : IHttpModule
{
public void Init(HttpApplication application)
{
}
public void Dispose()
{
}
}
}
然后你在里面注册HttpModulesweb.config
:
<configuration>
<system.web>
<httpModules>
<add name="PerformanceHttpModule" type="DummyPlaceholder.PerformanceHttpModule"/>
</httpModules>
</system.web>
</configuration>
当我在我的 Visual Studio 2012 集成(“Cassini”)网络服务器中进行本地开发和测试时,一切都很好。
当需要部署到实时 IIS7 Web 服务器时,服务器会给出500 Internal Server Error,并且绝对没有任何关于原因的信息。
问题是 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
对于模块。
我怎么做?