2009-06-08 97 views
18

我正在使用HttpModule在我的网站上执行一些网址缩短操作。我正在使用Visual Studio 2008和IIS 7以及.Net 3.5。HttpModule未与Visual Studio一起运行

当模块在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中的一切反正。)

回答

0

你尝试也把模块声明中的元素?在使用Cassini的开发环境中运行时,通常我必须放置模块来让它们运行。

+0

你可以进一步扩展吗?我不确定你是什么意思。 – 2009-09-07 21:30:33

37

卡西尼,IIS提供的开发网络服务器使用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设置

+0

这看起来很有希望,很快就会找到结果... – 2009-06-10 03:34:45

2

如果您在IIS 7上运行,把模块:

<configuration> 
    <system.webServer> 
     <modules> 
     <add name="MinimizeModule" type="ClipperHouse.UrlMinimizer.MinimizeModule" /> 
     </modules> 
    </system.webServer> 
</configuration> 

如果您在卡西尼(Visual Studio的集成微型网络服务器)上运行,把该模块位于:

<configuration> 
    <system.web> 
     <httpModules> 
      <add name="MinimizeModule" type="ClipperHouse.UrlMinimizer.MinimizeModule" /> 
    </system.web> 
</configuration> 

如果您为卡西尼位置提供IIS,它将崩溃。
如果你给它的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的左手不知道什么卡西尼的右手在做什么 - 他们都搞砸了。

相关问题