在應用程序級別之外使用註冊爲 allowDefinition='MachineToApplication' 的節是錯誤的。

 在應用程序級別之外使用註冊爲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的認證標籤以及標籤之間的東西全部去掉

說白了,這個問題應該是你沒有將你的應用放在站點的根目錄下吧,而是放在虛擬目錄下,可能需要設置一下:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章