[IIS]IIS7.0發生An ASP.NET setting has been detected that does not apply in Integrated managed pipeline mode.錯誤

[IIS]IIS7.0發生An ASP.NET setting has been detected that does not apply in Integrated managed pipeline mode.錯誤

最近剛從XP+IIS5.1升上Windows7+IIS7.0,雖然Windows 2003+IIS6.0的部分我還算蠻熟悉的,之前雖然有幫忙設定過一些Windows 2008+IIS7.0的系統,但在當時畢竟只是要讓系統可以執行,但這兩天升上Windows7+IIS7.0後,我的開發環境已經整個移轉上來,一些開發上的適應問題也要開始做調整,甚麼UI跟命名上的變化就不多提了,玩個幾天就可以適應,接著我要開始用我的環境來執行程式時,倒是發生了一些狀況,第一個問題是我既有的website,在加入虛擬目錄後,執行時竟然會出現下面這個錯誤:

image

這樣的問題通常不難處理,上網查了一下錯誤訊息,就可以找到一大堆,這邊我參考微軟開發IIS7.0的一個員工的BLOG:

Breaking Changes for ASP.NET 2.0 applications running in Integrated mode on IIS 7.0

裡頭提到IIS7.0在Integrated mode中提供了可擴充性的功能,而IIS7.0建立好站台後,預設是使用Integrated mode,這段話喚起了我數年前的記憶,當初IIS7.0將推出時就有提過IIS7.0在功能擴充性上比IIS6.0來的強的多,除了可以自己添加功能,也能移除部分功能,而如以下提到,也能擴充到自己添加log功能,這些功能在JSP的web server如JBOSS上我記得都是預設的功能,我想IIS這樣的變更也是逐步在朝向managed server container的方向前進吧,希望能再持續進步。

ASP.NET 2.0 applications on IIS 7.0 are hosted using the ASP.NET Integrated mode by default. This new mode enables a myriad of exciting scenarios including using super-valuable ASP.NET features like Forms Authentication for your entire Web site, and developing new ASP.NET modules to do things like URL rewriting, authorization, logging, and more at the IIS level.

上面那篇參考資料中提到許多IIS7.0 Integrated Mode的特色,不過消化與實做驗證需要一些時間,有機會再慢慢貼出來吧,現在先著重如何解決這個問題吧,解決的方法有兩個:

1.修改Managed Pipeline Mode

請依以下的方式進行:

  • 開啟IIS後,點選Applicatoion Pools-->指定到有問題的Pool Name-->右鍵-->Advancesd Settings

image

  • 變更Managed Pipeline Mode-->Classic

image

這種方法上頭那位微軟的develpoer說不建議,因為使用Classic Mode就無法享受Integreated Mode帶來的好處了,同樣身為developer我絕對認同,新功能如果沒有人用,那做出來實在沒太多意義的,哈哈....

 

2.修改web.config檔

在web.config中加入這段,再重新開啟網頁就會發現一切變成正常了。

    <validation validateIntegratedModeConfiguration="false" />
</system.webServer>

今天剛使用IIS7.0準備trace一下程式時就發現這個問題,對IIS7.0還是太不熟了些,看來要花些時間好好研究一下這個新版本了。

游舒帆 (gipi)

探索原力Co-founder,曾任TutorABC協理與鼎新電腦總監,並曾獲選兩屆微軟最有價值專家 ( MVP ),離開職場後創辦探索原力,致力於協助青少年培養面對未來的能力。認為教育與組織育才其實息息相關,都是在為未來儲備能量,2018年起成立為期一年的專題課程《職涯躍升的關鍵24堂課》,為培養台灣未來的領袖而努力。