9

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

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

9 回答 9

11

在站点根目录创建一个虚拟目录。这可以通过 VS 中 Web 选项卡下的项目属性来完成。

您也可能在子目录中定义了应该在根配置文件中的东西。在这里查看类似的问题:

使用注册为 allowDefinition='MachineToApplication' 的部分超出应用程序级别时出错

于 2013-04-30T19:20:15.343 回答
5

将您的文件夹/项目转换为 IIS 中的应用程序可以解决此错误。

于 2017-01-12T13:26:10.330 回答
3

如果您尝试打开一个 asp.net 网站并在它最初由解决方案封装时运行它,似乎会发生此错误。这样做:关闭网站,在文件系统中找到相关的解决方案(.sln-file),然后打开它。在解决方案中,您现在可以使用您的网站而不会出现此错误。

如果微软能在人们像这样迷失在 asp.net 中时引导他们朝着正确的方向前进,那就太好了。对于像我这样的普通人来说,关于 allowDefinition=MachineToApplication 的当前错误消息是无法理解的。

于 2018-07-18T10:45:06.830 回答
3

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

在此处输入图像描述

于 2019-12-18T18:08:53.097 回答
2

子目录中的web.config 的内容应该放在根目录下。子目录中的配置使 IIS 将子目录视为应用程序根目录,但它不是应用程序根目录。这就是您收到错误 allowDefinition='MachineToApplication' 的原因。

于 2013-04-30T19:20:13.667 回答
1

我删除了项目的 bin 和 obj 文件夹,然后重建了解决方案,一切正常……这不是一个技术娴熟的答案,但它可以工作。

于 2018-03-14T20:37:50.253 回答
1

只需在您的 csproject 文件中添加以下行以自动清理 obj/bin 文件夹。

<Target Name="BeforeBuild">
  <!-- Remove obj folder -->
  <RemoveDir Directories="$(BaseIntermediateOutputPath)" />
  <!-- Remove bin folder -->
  <RemoveDir Directories="$(BaseOutputPath)" />
</Target>
于 2020-12-09T10:21:43.023 回答
0

我从 IIS 而不是文件系统打开了网站,它工作正常。

于 2015-09-27T03:23:16.517 回答
-3

如果您的 web.config 文件和所有 aspx 文件不在同一个文件夹中,则会发生此错误。所以请将所有文件放在同一个文件夹中。

谢谢。

于 2015-04-17T06:33:55.820 回答