在应用程序级别之外使用注册为 allowDefinition='MachineToApplication' 的节是错误的
若IIS中没有应用程序名,先创建!
若还不行
把C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG\machine.config中的allowDefinition='MachineToApplication'改为allowDefinition='EveryWhere'
或者把web.config中authentication的 mode="None
关于“在应用程序级别之外使用注册为 allowDefinition='MachineToApplication'”的错误
1、起因:要让一个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: 是应用级别的,不能在子目录级别的web.config内设置,把它放在应用级别的web.config里,在子目录下用节来控制访问。即:
<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>
解决3:在网站对应的虚拟目录上右键,选属性,然后在应用程序名后点创建。
我按他们说的找没找到,最终我理解就是
把你的虚拟目录指向web.config所在在文件夹,因为 web.config 的某些配置节只能出现在网站的虚拟目录跟目录中。
如果:先装了.NET 2005 , 后装IIS, 程序在.NET下运行正常, 在IIS里报错: 服务器应用程序不可用 解决方法: cmd 到 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 运行 aspnet_regiis.exe空格-i 会显示开始安装 ASP.NET , 安装完毕后问题解决。