在應用程序級別之外使用註冊爲allowDefinition='MachineToApplication' 的節是錯誤的
在應用程序級別之外使用註冊爲allowDefinition='MachineToApplication' 的節是錯誤的在應用程序級別之外使用註冊爲 allowDefinition='MachineToApplication' 的節是錯誤的。如果在 IIS 中沒有將虛擬目錄配置爲應用程序,則可能導致此錯誤。
但是我確實在IIS中配置爲應用程序了
解決方法:將此方案中的web.config文件刪除掉,就ok了。
因爲當前項目已經存在了一個web.config,也就是說再添加該項目時,就會繼承該web.config,如果你再加的話,就會發生衝突。
******************************************************************************************************************
在應用程序級別之外使用註冊爲 allowDefinition='MachineToApplication' 的節是錯誤的
原因:如果在 IIS 中沒有將虛擬目錄配置爲應用程序,則可能導致此錯誤。
1、若IIS中沒有應用程序名,先創建,若還不行把C:\WINDOWS\Microsoft.NET\work\v2.0.50727\CONFIG\machine.config中的所有allowDefinition="MachineToApplication"改爲allowDefinition="Everywhere"
2、在網站對應的虛擬目錄上右鍵,選屬性,然後在應用程序名後點創建。
3.把你的虛擬目錄指向web.config所在在文件夾,因爲 web.config 的某些配置節只能出現在網站的虛擬目錄跟目錄中。
另例一:
在ASP.NET2.0中,如果根目錄允許匿名用戶訪問,而根目錄下的一個頁面(如Index.aspx)必須要登錄(假設登錄頁面爲login.aspx)後才能訪問,根目錄下的web.config文件必須這樣配置:
<?xml version="1.0"?>
<configuration>
<appSettings>
</appSettings>
<connectionStrings>
</connectionStrings>
<system.web>
<compilation debug="true"/>
<authentication mode="Windows"/>
<authentication mode="Forms">
<forms loginUrl="login.aspx" protection="All" path="/" timeout="30"/>
</authentication>
<authorization>
<!--允許匿名-->
<allow users="?"/>
</authorization>
</system.web>
<location path="Info.aspx">
<system.web>
<!--認證項配置(在爲一個單獨頁面指定認證信息時,authentication節只能從這個目錄繼承,不能單獨設置)-->
<!--
<authentication mode="Forms">
<forms name=".www.cnpp.info" loginUrl="login.aspx" protection="All" path="/" timeout="30"/>
</authentication>
-->
<!--用戶訪問控制-->
<authorization>
<!--阻止匿名-->
<deny users="?"/>
</authorization>
</system.web>
</location>
</configuration>
也就是在需要認證的頁面配置節中不能配置authentication項,只能在在根目錄中配置authentication項,Info.aspx從根目錄繼承. 否則會出現這樣的錯誤: "在應用程序級別之外使用註冊爲 allowDefinition='MachineToApplication' 的節是錯誤的。如果在 IIS 中沒有將虛擬目錄配置爲應用程序,則可能導致此錯誤 "
另例二:
我想讓用戶在訪問我的程序的Admin文件夾下的頁面時需要登錄,而在訪問其他頁面時則不需要,也就是說Admin文件夾下的文件拒絕匿名訪問.
下面是配置根目錄下的web.config文件中關於授權驗證的配置
<system.web>
<authentication mode="Forms">
<forms loginUrl="Admin/Login.aspx"></forms>
</authentication>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
<location path="Admin">
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</location>
注意location節,location節不需要<authorization>節了,假若加了的話,便會出現"在應用程序級別之外使用註冊爲 allowDefinition='MachineToApplication' "這樣的錯誤了,若在子文件下添加配置文件時也要注意相同的問題.
******************************************************************************************************************
(1)把虛擬目錄配置成應用程序
(2)把web.config的認證標籤以及標籤之間的東西全部去掉
說白了,這個問題應該是你沒有將你的應用放在站點的根目錄下吧,而是放在虛擬目錄下,可能需要設置一下: