在根目录下,我有以下结构
..
..
..
web.config
Report Folder
- Login.aspx
- Web.config
|
|-> ViewReport
|
|-> Report.aspx
在Report文件夹中的web.config文件中,我有以下内容:
<?xml version="1.0"?>
<configuration>
<system.web>
<authentication mode="Forms">
<forms loginUrl="Login.aspx" defaultUrl="ViewReport/Report.aspx">
<credentials passwordFormat="Clear">
<user name="Johl" password="pass888"/>
</credentials>
</forms>
</authentication>
</system.web>
<location path="ViewReport/Report.aspx">
<system.web>
<authorization>
<allow users="Johl"/>
<deny users="*"/>
</authorization>
</system.web>
</location>
</configuration>
当我开始调试时,我收到以下消息:
在应用程序级别之外使用注册为allowDefinition ='MachineToApplication'的部分是错误的。此错误可能是由于未在IIS中将虚拟目录配置为应用程序引起的。
请注意,在我的根web.config中,我有以下内容:
在我的根目录中,我已经拥有以下内容:
<system.web>
<authentication mode="Forms">
<forms loginUrl="Str/StrUserLogin.aspx" timeout="2880" slidingExpiration="true" />
</authentication>
<authorization>
<allow users="*" />
</authorization>
</system.web>
答案 0 :(得分:10)
在站点根目录下创建虚拟目录。这可以通过Web选项卡下的VS中的项目属性来完成。
您也可能在子目录中定义了应该位于根配置文件中的内容。在这里看到类似的问题:
Error to use a section registered as allowDefinition='MachineToApplication' beyond application level
答案 1 :(得分:5)
将您的文件夹/项目转换为IIS中的应用程序可以解决此错误。
答案 2 :(得分:2)
子目录中web.config的内容应该是placede在根目录中。子目录中的配置使IIS将子目录视为应用程序根目录,但它不是应用程序根目录。这就是为什么你得到错误allowDefinition ='MachineToApplication'。
答案 3 :(得分:1)
如果您尝试打开asp.net网站并在最初由SOLUTION封装时运行它,则似乎会发生此错误。 这样做:关闭网站,在文件系统中进一步找到相关的解决方案(.sln-file),然后打开它。在解决方案内部,您现在可以使用您的网站,而不会出现此错误。
如果Microsoft能够像这样在asp.net中迷路的人指引人们正确的方向,那就太好了。像我这样的普通人无法理解当前关于allowDefinition = MachineToApplication的错误消息。
答案 4 :(得分:0)
我从IIS而不是文件系统打开了网站,它运行良好。
答案 5 :(得分:0)
我删除了项目的bin和obj文件夹,然后重建了解决方案,一切正常......不是技术上精明的答案,但它确实有效。
答案 6 :(得分:0)
答案 7 :(得分:0)
只需在您的csproject文件中的以下行中添加此代码,即可自动清理obj / bin文件夹。
<Target Name="BeforeBuild">
<!-- Remove obj folder -->
<RemoveDir Directories="$(BaseIntermediateOutputPath)" />
<!-- Remove bin folder -->
<RemoveDir Directories="$(BaseOutputPath)" />
</Target>
答案 8 :(得分:-3)
如果您的web.config文件和所有aspx文件不在同一文件夹中,则会发生此错误。所以请把所有文件放在同一个文件夹中。
感谢。