【问题标题】:Error: allowDefinition='MachineToApplication' beyond application level错误:allowDefinition='MachineToApplication' 超出应用程序级别
【发布时间】:2010-03-01 13:07:26
【问题描述】:

我已经在 ASP.Net 中下载了在线项目。运行应用程序时出现错误

在应用程序级别之外使用注册为 allowDefinition='MachineToApplication' 的部分是错误的。此错误可能是由于虚拟目录未在 IIS 中配置为应用程序所致。

我应该在 web.config 或其他地方进行哪些更改才能使其正常工作?

【问题讨论】:

  • 网上找到的答案都没有对我有用。我的问题通过显示所有隐藏文件/文件夹并删除 obj 文件夹得到解决。
  • 这个问题在 VS2012 中仍然存在。我已经向 Microsoft 打开了一个错误报告。任何遇到此问题的人,请支持错误报告connect.microsoft.com/VisualStudio/feedback/details/779737/…
  • 删除 obj 文件夹也为我解决了这个问题。谢谢@尼克! (抱歉复兴)
  • 就我而言,子文件夹中额外的 web.config 会导致此问题。当我删除多余的 web.config 时,错误消失了

标签: asp.net visual-studio-2012


【解决方案1】:

我刚刚遇到了这种“喜悦”。它似乎在我以发布模式发布 Web 应用程序后出现。

始终解决我发现的问题的唯一方法是遵循以下清单:

  1. 在您的解决方案配置为发布模式时清理解决方案。
  2. 在您的解决方案配置为调试模式时清理解决方案。
  3. 在您的解决方案配置为调试模式时进行构建。

【讨论】:

  • 唯一对我也有用的答案。在此之后,我还有许多其他错误在等着我,但它们无关紧要。我通过将MvcBuildViews 设置为true 到达这里。
  • +1 BTW:我认为这对我有用的原因是我最近的构建是 Debug。我打开了解决方案,修复了错误并尝试在 RRelease 模式下构建。 Release 中的清理不起作用,但 Debug 中的清理可以。 (可能需要两者的组合,即清除 any 对 dll 的旧引用,无论是 Debug 还是 Release)。跨度>
  • 我做了一个clean,然后转到*项目属性 -> Web -> 创建虚拟目录 然后问题就解决了
  • 我只需要在调试模式下进行清理和重建。无需在发布和调试之间来回切换。但是,是的,清洁非常重要。这就是问题的核心。
  • Clean 在我的情况下不可用,这是我以前从未见过的。这是我从一位前同事那里继承来的一个非常古老的 VB.NET 应用程序。
【解决方案2】:

刚刚遇到this post,这就是发生在我身上的事情。
只需Clean 项目,错误就会消失。 (一定是VS2010的bug)

【讨论】:

  • 如果您在 Visual Studio 中将此作为错误得到此解决方案。
  • 有时 clean 不会清除 obj 文件夹。这有时也需要删除。
  • 清理和删除 obj 都不起作用。 Johnny Reilly 的解决方案对我有用。
  • 我必须在调试和发布模式下运行 clean 才能摆脱这个问题。运行它只是为了调试似乎并没有解决问题。
  • VS2013SP1 中仍然存在同样的问题。一个简单的清理让我再次部署。
【解决方案3】:

我在构建我的网站的第二个版本时遇到了这个问题。当我第一次构建它时,它并没有发生。

我刚刚删除了 bin 和 obj 文件夹,运行 Clean Solution 并再次构建它,这次没有任何问题。

【讨论】:

  • 这是在 VS Express 2012 for Web 中唯一对我有用的解决方案。此外,我只是在创建解决方案配置后才开始收到此错误,并将 MvcBuildViews 设置为 true 到 .csproj 源中的 PropertyGroup。
【解决方案4】:

没有。您需要将您放置网站的目录设置为web application within IIS

【讨论】:

  • 虽然从技术上讲这是一个改变“在其他地方进行这项工作”;)
  • 如果您在 Web 应用程序中遇到此错误,这就是解决方案! =P
  • 我已经设置为应用程序。 Johnny Reilly 的解决方案适用于我。
  • 我只是想让模板 Webforms 应用程序正常工作。在 localhost 上很好,但在 LAN 上的服务器上不行。这个解决方案对我有用:我的局域网上的 VS2015 CE、Windows Server 2008。我使用这个 MS 页面来解释在 IIS 上做什么:support.microsoft.com/en-gb/kb/917413。模板代码没有变化。
【解决方案5】:

当您尝试将项目作为网站打开时会发生此错误。确定您是否创建了网站或项目的最简单方法是检查您的解决方案文件夹(即您保存代码的位置)并查看根目录中是否有 *.sln 文件,如果有,那么您已经创建了一个项目。

补充一下,我刚才在尝试打开一个项目时遇到了这个错误打开项目”。我一意识到就捂脸:)

【讨论】:

  • 这也是我的问题
【解决方案6】:

在 Visual Studio 2013 中,我为此苦苦挣扎了一段时间,解决起来非常容易只需按照异常说明 “虚拟目录未配置为 IIS 中的应用程序”

就我而言,我将WebService 种植在IIS website 内,所以

  1. 我在 IIS 管理器中打开了网站
  2. 右键单击 WCF 文件夹
  3. 点击了Convert to Application
  4. 然后用Ok提交

WCF 已恢复运行。

【讨论】:

  • 我在将应用程序移至默认网站时遇到了这个问题。第 3 点解决了我的问题。
  • 当我们迁移到新的 Web 服务器时,这对我有用。执行“转换为应用程序”后,文件夹符号发生了变化,并且 ASP.NET MVC webapp 开始在该 Web 服务器上运行。
【解决方案7】:

如果您有启用视图构建的 MVC 项目,解决方案之一是在构建之前删除 obj 文件夹。添加到项目文件:

<Target Name="BeforeBuild">
    <!-- Remove obj folder -->
    <RemoveDir Directories="$(BaseIntermediateOutputPath)" />
    <!-- Remove bin folder -->
    <RemoveDir Directories="$(BaseOutputPath)" />
</Target>

这里是文章:How to remove bin and/or obj folder before the build or deploy

【讨论】:

  • 你拯救了我的一天!
【解决方案8】:

错误表明您正在使用的代码需要在 IIS 上设置虚拟目录。

查找文档并添加所需的虚拟目录。它应该是一个包含web.config 的目录(不是根目录)。

【讨论】:

  • 删除较低目录中的第二个 web.config 解决了我的问题。
  • 我的一个人在Web.config 中的Web.config 中有他的&lt;authentication mode="Forms"&gt;&lt;forms name="..." loginUrl="~/Login/Login/" timeout="2880" /&gt;&lt;/authentication&gt;,而不是在trunk 文件夹中,这导致了这个问题。
【解决方案9】:

最近的 web.config 更改可能在错误的 web.config 文件中。

&lt;machineKey...&gt; 属性已添加到 Views/web.config。无论清理和重建多少次,错误仍然存​​在。解决方法是将属性移动到根 /web.config

【讨论】:

  • 我们不小心将父 Web.config 复制到 /Views 文件夹中。将 Views 文件夹的原始小得多的版本放在那里,网站又可以正常工作了。
【解决方案10】:

如果您遇到此错误

使用注册为的部分是错误的 allowDefinition='MachineToApplication' 超出应用程序级别。这 错误可能是由于未将虚拟目录配置为 IIS 中的应用程序

解决方案
我对 VS 2012 也有同样的问题。 我通过

解决了这个问题
  1. 卸载当前项目
  2. 编辑您的 .csproj
  3. 找到这个&lt;MvcBuildViews&gt;false&lt;/MvcBuildViews&gt;
  4. 而不是 false 将值更改为 true
  5. 再次加载您的项目,您应该不会再出现此错误

如果有,那么一种解决方案是删除编译器生成的项目中 obj 文件夹的内容。

【讨论】:

  • 这很奇怪,将MvcBuildViews 设置为true 是我首先得到错误的原因。
  • 在将 MvcBuildViews 更改为 true 后,我也开始收到错误消息。我通过将值改回 false 来消除错误消息。
  • 我在 both 发布和调试模式下做了一个“干净的解决方案”,现在构建也可以使用 &lt;MvcBuildViews&gt;true&lt;/MvcBuildViews&gt;
  • @JuhaPalomäki 超级甜!谢谢。
  • 我的情况与@visar_uruqi 完全相反。我的意思是在我的 .csproj 文件中,我将选项 MvcBuildViews 设置为 true,当我设置为 false 时,错误被省略(未显示)。
【解决方案11】:

就我而言,问题仅在我将项目发布到子目录后出现。由于我缺乏知识,我将我的web_publish 子目录放在了web_project 目录中。

很明显,web_publish 也包含与项目相同的Web.configs。但是,web_project 不知道在嵌套子目录中搜索Web.configs 时应该避免我的web_publish。这样一来,Web.configs 就被复制了,出现了错误。

解决方案是将我的web_publish 放在其他地方。

【讨论】:

    【解决方案12】:

    就我而言,有一个“备份”文件夹,其中包含整个网站的另一个副本。这意味着另一个web.config,因此构建失败并出现此错误。我删除了“Backup”文件夹,在 Debug 和 Release 版本上做了一个 Clean 解决方案,错误消失了。

    【讨论】:

    • 我遇到了类似的情况,有人在磁盘上的网站根目录中创建了一个“已发布”子文件夹(这是一个旧的 Web 项目,其中一个没有解决方案文件),并且有其中有一个 Web.config。当 Visual Studio 尝试构建它时发生错误,当然,没有多少清理/删除“obj”文件夹等可以解决这个问题。我已经看到了很多这个错误的实例,而且它几乎总是一个重复的 Web.config 隐藏在某个地方......(也是非常糟糕的错误消息!)
    【解决方案13】:

    就我而言,

    解决方案包含 6 个项目、1 个主目录和 5 个子目录。所有具有 web.config 的子目录。

    在子目录中运行任何页面时,我都遇到了同样的错误。

    我从 web.config 中删除了这一行,

    <authentication mode="Windows"/>
    

    这对我有用。

    【讨论】:

    • 该行在那里但由于我猜的一些缩进问题而没有显示。我在代码块中编辑并粘贴了代码,它现在显示。请检查并告诉我是否可以提供帮助。
    • 谢谢,这也证实了它对我来说也失败了。我只有一个站点,所以我通过打开一个网站而不是一个项目来绕过它。
    【解决方案14】:

    清理您的项目 删除 /obj 文件夹(可能使用发布和部署? - 有一个错误)

    【讨论】:

    • 唯一对我有用的解决方案。通过设置 true 到达这里。
    【解决方案15】:

    我的问题是我在全新安装 VS2010 时不小心将我的 Web 服务发布到了预先完成的位置。

    我已发布到一个名为 PreCompiledWeb 的文件夹,我怀疑 web.config 的存在搞砸了。

    我只是简单地删除了文件夹,然后刷新了项目。

    当双击这个错误时,它把我带到了那个错误的 web.config 文件,它提示了我。

    【讨论】:

      【解决方案16】:

      可能是版本问题,比如你下载了.Net framework 2.0的项目,想用VS2008打开,你需要升级到最新版本,VS会在同一根目录下创建文件夹的备份.你会得到答案here

      【讨论】:

      • ranganh 的回答 here 提供了更多详细信息。
      【解决方案17】:

      在使用在我的解决方案中创建的 Web 部署项目构建解决方案时出现此错误。我通过删除构建 Web 部署项目的文件夹来解决该错误。此文件夹在 WDP 属性的“项目文件夹”属性中指定

      【讨论】:

        【解决方案18】:

        删除 bin 和 obj 文件夹。然后重建解决方案。

        【讨论】:

        • 对于文件资源管理器,使用搜索查询 "obj" kind:=folder 和 "bin" kind:=folder 来查找/删除这些文件夹。这对我有用。
        【解决方案19】:

        显然我的解决方案中有两个 web.config 文件。我正在使用 MVC4,视图下还有另一个配置文件,我在错误的文件中进行了更改。固定在那里帮助了我。

        但您始终可以更改 global.asax 文件中的默认重定向/路由。

        【讨论】:

          【解决方案20】:

          您的项目文件夹中可能有一个子 asp.net 项目文件夹,该文件夹未配置为虚拟目录。设置项目以在 IIS 中运行。

          【讨论】:

            【解决方案21】:

            我添加到我的网站发布脚本。最后,从您的网站文件夹中删除 obj 文件夹。

            【讨论】:

            【解决方案22】:

            如果在项目文件中启用“true”,我会更频繁地遇到这个问题。

            1. 设置为假

            正如乔尼所说:

            1. 在您的解决方案配置为发布模式时清理解决方案。
            2. 在您的解决方案配置为调试模式时清理解决方案。
            3. 在您的解决方案配置为调试模式时进行构建。

            【讨论】:

              【解决方案23】:

              我有一个项目,我不想成为一个 Web 应用程序,我希望它成为一个文件夹。答案是完全删除 web.config 文件。它只属于应用程序的根目录。

              【讨论】:

                【解决方案24】:

                如果您在某个服务器上发布您的网站或应用程序时遇到此问题,我使用的简单解决方案是将包含文件的文件夹转换为 Web 应用程序。

                【讨论】:

                • 嗨,欢迎来到 Stack Overflow!你能扩大你的答案吗?您能解释一下如何将文件夹转换为 Web 应用程序吗?这将有助于其他人更好地理解您的答案。
                • 在 IIS 管理器右侧的“连接”窗格下,右键单击已创建的站点(或默认网站)下的目录,然后选择 Convert to Application
                【解决方案25】:

                在调试模式下发布我的项目后,我在 VS 2013 中遇到了同样的问题。问题已通过删除 obj/ 文件解决

                【讨论】:

                  【解决方案26】:

                  我有一个网站项目。

                  就我而言,我已将解决方案文件移动到另一个路径,这导致了问题。我把它恢复到以前的位置,问题就解决了。

                  【讨论】:

                    【解决方案27】:

                    对于仍在寻找的任何人,我的解决方案是删除 bin 和 obj 文件夹并重新启动 Visual Studio 似乎可以解决它。

                    【讨论】:

                      【解决方案28】:

                      通过 Visual Studio,我将published a WCF Service via FTP 连接到外部服务器。它在本地运行良好,在发布到内部服务器时运行良好,但在外部服务器上运行良好。解决方案是在不提供Site Path 的情况下发布(换句话说,直接发布到虚拟目录的根目录)。

                      我不确定它为什么会起作用,因为我已经尝试通过外部 FTP 客户端将文件移动到根目录 - 以及许多其他尝试,包括此处列出的所有尝试。也许这与发布配置文件有关,例如 FabianVal。但是我现在已经没有心情测试了,因为在这个问题上浪费了这么多天之后,我急于加快速度。

                      【讨论】:

                        【解决方案29】:

                        提示 1:清理然后重建。

                        提示 2:只需关闭 VS 并再次打开。

                        提示 3:下载的项目可能在另一个子文件夹中...打开包含 .net 文件的文件夹。

                        c:/demo1/demo/ (所有文件)

                        你应该从 vs... 而不是 demo1 打开 demo。

                        【讨论】:

                          【解决方案30】:

                          我尝试了上述所有解决方案,但都没有解决我的问题。 (我确信这个问题有 1000 个解决方案)对于我的场景,我试图将我在测试中的 WCF Web 服务发布到生产环境中。

                          但是,我没有意识到在生产中我们只是 HTTPS,这意味着我们将所有内容重定向到 HTTPS。事实证明,我是通过 HTTP 而不是 HTTPS 指向服务,从而导致错误。这种情况下的解决方案是简单地将地址协议更改为 HTTPS 而不是 HTTP。

                          我希望这可以帮助那些试图解决这个问题的可怜人。

                          【讨论】:

                            猜你喜欢
                            • 2012-01-20
                            • 1970-01-01
                            • 1970-01-01
                            • 1970-01-01
                            • 1970-01-01
                            • 1970-01-01
                            • 1970-01-01
                            • 2012-09-03
                            相关资源
                            最近更新 更多