2009-06-08 85 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的左手不知道什麼卡西尼的右手在做什麼 - 他們都搞砸了。

相關問題