在ASP.NET程式中,我們是可以在各個目錄放置不同的web.config檔案的,但有時在非根目錄先放置的web.config檔案會導緻這樣的錯誤提示:
"在應用程式級别之外使用注冊為 allowDefinition='MachineToApplication' 的節是錯誤的。如果在 IIS 中沒有将虛拟目錄配置為應用程式,則可能導緻此錯誤。"
"It is an error to use a section registered as allowDefinition='MachineToApplication' beyond application level. This error can be caused by a virtual directory not being configured as an application in IIS. "
網上有不少相關的文章,主要的解決方法如下:
解決方法1(不推薦):
在IIS将該目錄做成應用程式:打開IIS —> 預設Web站點 —> 找到該目錄右鍵打開屬性頁 —> 目錄(或虛拟目錄)卡 —> 在下半部分“應用程式設定”處點第一項的“建立”,把該目錄做成應用程式。
解決方法2(不推薦):
若IIS中沒有應用程式名,先建立,若還不行把C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG\machine.config中的所有allowDefinition="MachineToApplication"改為allowDefinition="Everywhere"
解決方法3:
在Web.config檔案中删除<authentication mode="Windows" />結點就可以了。
要注意的一點是,我們首先要了解這個錯誤,再視圖去消除這個錯,其實大部分時候是不應該用第一種和第二種解決方法去消除出錯提示的,這個出錯提示的出現是因為web.config中的某些節點在一個IIS應用程式中是隻能設定一次的,比如<authentication>節,是以大部分時候這個錯誤是由于多個子目錄下存在多個web.config導緻的,比較謹慎的解決方法應該是仔細檢視出問題目錄下的web.config,剔除掉不能重複設定的節點。
附:對于DNN使用者,任何子目錄下被誤插入了web.config檔案都會導緻這個錯誤,删除誤插入了web.config檔案即可解決問題。