檢測到在集成的託管管道模式下不適用的ASP.NET設置的解決方法(非簡單設置爲【經典】模式)。html
咱們將ASP.NET程序從IIS6移植到IIS7,可能運行提示如下錯誤:web
HTTP 錯誤 500.23 - Internal Server Errorapi
檢測到在集成的託管管道模式下不適用的 ASP.NET 設置。服務器
爲何會出現以上錯誤?性能
在IIS7的應用程序池有兩種模式,一種是「集成模式」,一種是「經典模式」。網站
經典模式 則是咱們之前習慣的IIS 6 的方式。搜索引擎
若是使用集成模式,那麼對自定義的httpModules 和 httpHandlers 就要修改配置文件,須要將他們轉移到<modules>和<hanlders>節裏去。spa
兩種解決方法:插件
在IIS7上配置應用程序池,而且將程序池的模式改成「經典」,以後一切正常。如圖:code
在搜索引擎輸入上面提示的錯誤消息,搜索到的結果幾乎都是直接改成「經典」便淺嘗輒止了。
但這樣只是權宜之計,用了IIS7.x,但實際只發揮了6的功能,另外,在一些ASP.NET MVC程序中的效果也很差,因此,咱們嘗試如下解決方法:
例如原先設置(你的環境中可能沒有httpModules,httpHandlers節點)
<
system.web
>
............
<
httpModules
>
<
add
name
=
"MyModule"
type
=
"MyApp.MyModule"
/>
</
httpModules
>
<
httpHandlers
>
<
add
path
=
"*.myh"
verb
=
"GET"
type
=
"MyApp.MyHandler"
/>
</
httpHandlers
>
</
system.web
>
|
在IIS7應用程序池爲「集成模式」時,改成:
<
system.web
>
...........
</
system.web
>
<
system.webServer
>
<
modules
>
<
add
name
=
"MyModule"
type
=
"MyApp.MyModule"
/>
</
modules
>
<
handlers
>
<
add
name
=
"MyHandler"
path
=
"*.myh"
verb
=
"GET"
type
=
"MyApp.MyHandler"
preCondition
=
"integratedMode"
/>
</
handlers
>
</
system.webServer
>
|
(若是你的web.config沒有httpModules,httpHandlers節點,則直接在節點system.webServer中添加:
<validation validateIntegratedModeConfiguration="false" /> 這樣能夠禁止驗證集成模式,避免錯誤提示。