zoukankan      html  css  js  c++  java
  • [网络收集]在应用程序级别之外使用注册为 allowDefinition='MachineToApplication'

    经常做.NET开发会遇到如下问题,实在郁闷,后来上网查了些资料总结一下,供那些有同样问题的朋友一起参详。

    错误 1 在应用程序级别之外使用注册为 allowDefinition='MachineToApplication' 的节是错误的。如果在 IIS 中没有将虚拟目录配置为应用程序,则可能导致此错误。 C:\Users\kiki\Desktop\readsoft_51aspx\Web\Web.Config 34 

    但是我确实在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的认证标签以及标签之间的东西全部去掉

    说白了,这个问题应该是你没有将你的应用放在站点的根目录下吧,而是放在虚拟目录下,可能需要设置一下:

    其他起因:要让一个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>

  • 相关阅读:
    android系统移植与驱动开发概述
    产品常用网址
    Java泛型、反射、集合、多线程
    Java常用类
    Java异常处理
    Java面向对象(二)
    Java面向对象(一)
    Java基础知识
    友链
    退役了
  • 原文地址:https://www.cnblogs.com/lushuicongsheng/p/1882936.html
Copyright © 2011-2022 走看看