关于错误: "在应用程序级别之外使用注册为 allowDefinition='MachineToApplication' 的节是错误的。如果在 IIS 中没有将虚拟目录配置为应用程序,则可能导致此错误 "

该错误的出现往往是由于Web.config的配置错误而产生的。

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

©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值