我正在使用HttpModule在我的网站上做一些网址缩写。我使用的是Visual Studio2008、IIS7和.Net 3.5。
当在web.config的system.webServer元素中指定该模块,并且站点在IIS中运行时,它可以正常工作。配置如下所示:
<system.webServer>
<modules>
<add name="MinimizeModule" type="ClipperHouse.UrlMinimizer.MinimizeModule" />
</modules>...
我的模块附加到BeginRequest事件,一切正常。但是,我无法使用内置的VS web服务器(Cassini)来运行它。我尝试将模块配置移到web.config中的system.web元素,但没有成功。我给它设了个断点,什么也没发生。
有没有想过为什么这会成为一个问题?
(我还尝试了global.asax中的Application_BeginRequest事件。仍然不走运,尽管我更喜欢将所有内容都保留在web.config中。)
发布于 2009-06-08 09:01:45
IIS提供的开发web服务器使用IIS6模块语法,因此您必须复制模块添加,如下所示
<system.web>
<httpModules>
<add name="MinimizeModule" type="ClipperHouse.UrlMinimizer.MinimizeModule" />
</httpModules>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
<modules>
<remove name="MinimizeModule" />
<add name="MinimizeModule" type="ClipperHouse.UrlMinimizer.MinimizeModule"
preCondition="managedHandler" />
</modules>
</system.webServer>
注意,我还为您的IIS7设置添加了一个前提条件
发布于 2015-01-10 00:20:38
如果您在IIS 7上运行,请将模块放入:
<configuration>
<system.webServer>
<modules>
<add name="MinimizeModule" type="ClipperHouse.UrlMinimizer.MinimizeModule" />
</modules>
</system.webServer>
</configuration>
如果您运行的是Cassini (Visual Studio的集成微型web服务器),请将模块放入:
<configuration>
<system.web>
<httpModules>
<add name="MinimizeModule" type="ClipperHouse.UrlMinimizer.MinimizeModule" />
</system.web>
</configuration>
如果将Cassini位置提供给IIS,则IIS将崩溃。
如果您给Cassini提供IIS位置,它将崩溃。
无论何时部署,我都必须确保不部署web.config
。我还将注释包含在web.config
中
<system.web>
<!--The Cassini location to add modules (comment out for IIS)-->
<httpModules>
<!--WARNING: IIS will crash if you leave this in here.
IISBUG: IIS doesn't support system.web/httpModules,
and Cassini doesn't support system.webServer/modules
-->
<!--Comment out for IIS-->
<add name="PerformanceHttpModule" type="DummyPlaceholder.PerformanceHttpModule"/>
</httpModules>
</system.web>
<system.webServer>
<!--The IIS7 location to add modules (comment out for Cassini)
<modules runAllManagedModulesForAllRequests="true">
<!--IIS7 will crash if you present a system.web httpModules. -->
<remove name="PerformanceHttpModule" />
<add name="PerformanceHttpModule" type="DummyPlaceholder.PerformanceHttpModule"/>
</modules>
</system.webServer>
IIS的左手不知道Cassini的右手在做什么--他们都搞砸了。
发布于 2009-06-08 08:41:29
您是否也尝试将模块声明放入元素中?当使用Cassini在dev中运行时,这通常是我必须放置模块以使其运行的位置。
https://stackoverflow.com/questions/963545
复制相似问题