一个httpModule突然不起作用了,原来是iis7里面的网站应用程序池使用了默认的“集成模式”,所以所有的http请求处理都托管给了 IIS,web.config里面的配置就不起效了。将程序池的模式改为“经典”之后,一切正常。当然你也可以在web.config里面加入下面的节 点,就不用把程序池模式改为“经典”模式了。
- <system.webServer> <validation validateIntegratedModeConfiguration="false" /> <handlers></handlers>
- <modules>
- <add name="moduleName" type="moduleClass, moduleDLLName" preCondition="integratedMode"/>
- </modules>
- </system.webServer>
如果要兼顾IIS6及IIS7,可在web.config中同时保留httpHandlers(for IIS6)及handlers(for IIS7)里的相同定义,但记得要加上<validation validateIntegratedModeConfiguration="false" />,不然IIS7会因为定义重复出现而发生错误。