標籤:des style blog http color 使用
最可能的原因:
• 此應用程式在 system.web/httpModules 節中定義配置。
可嘗試的操作:
• 將配置遷移到 system.webServer/modules 節。也可以手動這樣做,或通過在命令列中使用 AppCmd 來這樣做 - 例如,%SystemRoot%\system32\inetsrv\appcmd migrate config "Default Web Site/"。使用 AppCmd 遷移應用程式將使它能夠在整合模式下工作,並能繼續在傳統模式下和以前版本的 IIS 上工作。
• 如果您確信可以忽略此錯誤,則可以通過將 system.webServer/[email protected] 設定為 false 來禁用它。
• 也可以將應用程式切換到傳統模式應用程式集區 - 例如,%SystemRoot%\system32\inetsrv\appcmd set app "Default Web Site/" /applicationPool:"Classic .NET AppPool"。只有在無法遷移應用程式時才這樣做。
(將“Default Web Site”和“Classic .NET AppPool”設定為您的應用程式路徑及應用程式集區名稱)
連結和更多資訊整合模式是在 IIS 7.0 上運行 ASP.NET 應用程式的首選模式
{ IIS 的應用程式集區根據託管管道模式分了兩種類型:整合和經典兩種
整合 .NET 模式下,應用程式不應在 <system.web>/<httpModules> 配置節中指定 ASP.NET 模組組件,而應使用 <system.webServer>/<modules> 配置節來載入 ASP.NET 模組組件。
經典.NET 模式 則是我們以前習慣的IIS 6 的方式,沒有上述限制。}
解決方案:
方法1在IIS7上配置應用程式集區.
方法2:在IIS7添加我們的模組(modules)
參考:http://aabs.wordpress.com/2007/11/16/ihttpmodule-not-running-after-conversion-to-iis-7-and-net-35/
方法3:修改web.config
再細瞭解:
IIS7的Application Pools有兩種mode,一種是Integrated,一種是classic。如果使用Integrated模式,那麼對自訂的httpModules和httpHandlers就要修改設定檔了,需要將他們轉移到<modules>和<hanlders>節裡去。
IIS7的兩種模式和IIS6有什麼區別?
IIS7.0 Integrated mode:asp.net的modules和handlers從<system.webServer>下的<modules>和<handlers>裡讀取,以前的<system.web>下的<httpModules>和<httpHandlers>配置節會被忽略,如果設定禁止驗證(disabled validation),是不會產生錯誤的。
IIS7.0 Classic mode:與以上情況是相反的,<modules>和<handlers>會被忽略。
IIS6.0 :這個大家都不陌生了。
如果做一個可以在IIS6和IIS7的兩種mode下都可以啟動並執行配置?validateIntegratedModeConfiguration=“false”是做什麼用的?有需要的朋友可以在這裡查看詳情。
其次,從iis6遷移到iis7上後,有些url rewrite功能可能就不好用了,下面這篇文章講述了一個hack方法,有效控制了staticFile handler的職責,實現了像iis6那樣的工作方式。
範例程式碼:
<system.web> <!-- Modules for IIS 6.0 and IIS 7.0 Classic mode --> <httpModules> <add name="MagicAjaxModule" type="MagicAjax.MagicAjaxModule, MagicAjax"/> </httpModules> <!-- Handlers for IIS 6.0 and IIS 7.0 Classic mode -->
<httpHandlers>
<addpath="*.myh"verb="GET"type="MyApp.MyHandler" />
</httpHandlers>
</system.web><system.webServer> <!-- Modules for IIS 7.0 Integrated mode --> <modules> <add name="MagicAjaxModule" type="MagicAjax.MagicAjaxModule, MagicAjax"/> </modules> <!-- Handlers for IIS 7.0 Integrated mode -->
<handlers>
<addname="MyHandler"path="*.myh"verb="GET"type="MyApp.MyHandler"preCondition="integratedMode" />
</handlers>
<!-- Disable detection of IIS 6.0 / Classic mode ASP.NET configuration --> <validation validateIntegratedModeConfiguration="false" /> </system.webServer>