web.config allowDefinition = MachineToApplication错误

时间:2013-04-30 19:01:46

标签: asp.net web-config

在根目录下,我有以下结构

..
..
..
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>

9 个答案:

答案 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)

如果将发布的文件放在inetpub / wwwroot /../中,请确保将根文件夹作为应用程序添加到IIS管理器中。

enter image description here

答案 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文件不在同一文件夹中,则会发生此错误。所以请把所有文件放在同一个文件夹中。

感谢。