IIS7設定虛擬目錄產生「allowDefinition='MachineToApplication' 的區段發生錯誤」錯誤訊息

平常都是使用Visual Studio中的開發伺服器,但在設定使用Vista的IIS 7時,不管是設定「虛擬目錄」或是把網站原始目錄(wwwroot)設定到實際運作目錄,怎麼測都會出現錯誤訊息:「在應用程式層級之外使用註冊為 allowDefinition='MachineToApplication' 的區段發生錯誤。錯誤的原因可能是虛擬目錄尚未在 IIS 中設定為應用程式。」

只能說,又是一段天書級說明。還好,這個世界有G大。

參考說明:http://blog.xuite.net/sugopili/computerblog/19116944

錯誤原因是我自己造成的,因為平常我習慣將所有程式集中在一個目錄之下,如下架構:

WebDeveloper
-- WebSite1
-- WebSite2
-- WebSite3
-- ...

所以在每個WebSite之下都會有一個web.config,而我原先的想去是,在IIS設定虛擬目錄,然後指定到WebDeveloper目錄,然後想要執行或測試那個WebSite裡Code都進去Click即可,但這就是「問題點」,因為每個WebSite目錄之下都有完整的web.config,所以造成IIS/.Net Framework在初始化網站時產生錯誤,因為有太多個web.config。

WebDeveloper
-- WebSite1
web.config(完整版)
-- WebSite2
web.config(完整版)
-- WebSite3
web.config(完整版)
-- ...


回到最原始的理論:
Machine.config --> WebSite根目錄(web.config完整版) --> 子目錄(web.config部份版)

也就是說,一個WebSite之下只能有一個完整版web.config,像我們在安全或需要認證的目錄下設定的web.config部份設定,可覆寫根目錄web.config設定。但一個WebSite之下如果有多個web.config完整版的設定檔,就會產生錯誤訊息。

  所以我這種設定法是不正確的,也就產生了天書級的錯誤訊息。所以還是努力一點,想要測那個WebSite程式,就切換過去哪個目錄最保險。

沒有留言:

張貼留言

感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。