應用程序級別之外使用注冊為 allowDefinition='MachineToApplication' 的節是錯
出現這個錯誤時,在網上差了很多方法,開始還不行,后來終於遇到了一個可以的了,現總結下我查到的所有解決方法:
一、起因: 當前項目已經存在了一個web.config,也就是說再添加該項目時,就會繼承該web.config,如果你再加的話,就會發生沖突。
解決方法:如果有一個web.cofig沒有用的話可刪除。當然有用的話刪除會引起更多錯誤,看下面別的原因。
二、起因:要讓一個web程序的根目錄下的文件可以自由訪問,admin目錄下的文件只有通過驗證后的用戶才能訪問。
解決方法:用VS2005+asp.net2.0調試時,在根目錄下的一個子目錄(即:admin) 的web.config文件里配置了
<authentication mode="Forms">
<forms loginUrl="~/admin/login.aspx" name="login" />
</authentication>
運行時發生錯誤:
錯誤 21 在應用程序級別之外使用注冊為 allowDefinition='MachineToApplication' 的節是錯誤的。如果在 IIS 中沒有將虛擬目錄配置為應用程序,則可能導致此錯誤。 E:\Program Files\vs2005project\webapp1\admin\Web.config 12
三、起因:Machine.config里的allowDefinition="MachineToApplication"。
解決1:把allowDefinition設為:Everywhere。考慮到最好不要改動Machine.config文件,否則可能會引起其他錯誤。
解決2:<authentication mode="Forms"> 是應用級別的,不能在子目錄級別的web.config內
設置,把它放在應用級別的web.config里,在子目錄下用<authorization>節來控制訪問。
即:<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
根目錄下的web.config:
<authentication mode="Forms">
<forms loginUrl="~/admin/login.aspx" name="login" />
</authentication>
<authorization>
<allow users="*" />
</authorization>
四、起因:如果在 IIS 中沒有將虛擬目錄配置為應用程序,則可能導致此錯誤。
解決方法:建立虛擬目錄(默認網站--右鍵——新建——虛擬目錄)。
五、起因:web.config 的某些配置節只能出現在網站的虛擬目錄跟目錄中。
解決方法:把你的虛擬目錄指向web.config所在在文件夾。