最可能的原因:•此應(yīng)用程序在system.web/httpModules節(jié)中定義配置。可嘗試的操作:•將配置遷移到system.webServer/modules節(jié)。也可以手動這樣做,或通過在命令行中使用AppCmd來這樣做-例如,%SystemRoot%/system32/inetsrv/appcmdmigrateconfig"DefaultWebSite/"。使用AppCmd遷移應(yīng)用程序?qū)⑹顾軌蛟诩赡J较鹿ぷ鳎⒛芾^續(xù)在經(jīng)典模式下和以前版本的IIS上工作。•如果您確信可以忽略此錯誤,則可以通過將system.webServer/validation@validateIntegratedModeConfiguration設(shè)置為false來禁用它。•也可以將應(yīng)用程序切換到經(jīng)典模式應(yīng)用程序池-例如,%SystemRoot%/system32/inetsrv/appcmdsetapp"DefaultWebSite/"/applicationPool:"Classic.NETAppPool"。只有在無法遷移應(yīng)用程序時才這樣做。(將“DefaultWebSite”和“Classic.NETAppPool”設(shè)置為您的應(yīng)用程序路徑及應(yīng)用程序池名稱)鏈接和更多信息集成模式是在IIS7.0上運行ASP.NET應(yīng)用程序的首選模式
{ IIS 的應(yīng)用程序池根據(jù)托管管道模式分了兩種類型:集成和經(jīng)典兩種
集成 .NET 模式下,應(yīng)用程序不應(yīng)在 <system.web>/<httpModules> 配置節(jié)中指定 ASP.NET 模塊組件,而應(yīng)使用 <system.webServer>/<modules> 配置節(jié)來加載 ASP.NET 模塊組件。
經(jīng)典.NET 模式 則是我們以前習(xí)慣的IIS 6 的方式,沒有上述限制。}
解決方法:
方法1:在IIS7上配置應(yīng)用程序池.
將程序池的模式改為“經(jīng)典”之后,一切正常。
(具體方法:打開IIS,右邊操作里選基本設(shè)置,應(yīng)用程序池旁邊點選擇,選為Classic .net AppPool,就將管理模式切換為了經(jīng)典模式就OK了)
方法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就要修改配置文件了,需要將他們轉(zhuǎn)移到<modules>和<hanlders>節(jié)里去。
IIS7的兩種模式和IIS6有什么區(qū)別?
IIS7.0 Integrated mode:asp.net的modules和handlers從<system.webServer>下的<modules>和<handlers>里讀取,以前的<system.web>下的<httpModules>和<httpHandlers>配置節(jié)會被忽略,如果設(shè)置禁止驗證(disabled validation),是不會產(chǎn)生錯誤的。
IIS7.0Classic mode:與以上情況是相反的,<modules>和<handlers>會被忽略。
IIS6.0 :這個大家都不陌生了。
如果做一個可以在IIS6和IIS7的兩種mode下都可以運行的配置?validateIntegratedModeConfiguration=“false”是做什么用的?有需要的朋友可以在這里查看詳情。
其次,從iis6遷移到iis7上后,有些url rewrite功能可能就不好用了,下面這篇文章講述了一個hack方法,有效的控制了staticFile handler的職責(zé),實現(xiàn)了像iis6那樣的工作方式。
示例代碼:
<system.web> <!-- Modules for IIS 6.0 and IIS 7.0 Classic mode --> <httpModules> <addname="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> <addname="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>新聞熱點
疑難解答