VS编译 在应用程序级别之外使用注册为 allowDefinition='MachineToApplication' 的节是错误

 

一、在应用程序级别之外使用注册为 allowDefinition='MachineToApplication' 的节是错误的
原因:如果在 IIS 中没有将虚拟目录配置为应用程序,则可能导致此错误。
1、若IIS中没有应用程序名,先创建,若还不行把C:\WINDOWS\Microsoft.NET\work\v2.0.50727\CONFIG\machine.config中的所有allowDefinition="MachineToApplication"改为allowDefinition="Everywhere";

二、整个网站要放在根目录下;

三、一个项目中带有两个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 中没有将虚拟目录配置为应用程序,则可能导致此错误 "

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