错误:allowDefinition ='MachineToApplication'超出应用程序级别


193

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

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

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


53
在网络上找到的答案都没有对我有用。通过显示所有隐藏的文件/文件夹并删除文件夹解决了我的问题obj
松饼人

6
这个问题在VS2012中仍然明显。我已经与Microsoft一起打开了错误报告。任何人都遇到的问题,请给予好评的bug报告connect.microsoft.com/VisualStudio/feedback/details/779737/...
埃里克J.

4
删除obj文件夹也为我解决了此问题。谢谢@尼克!(对不起复兴)
乔丹·韦恩·克拉布


就我而言,子文件夹中多余的web.config导致了此问题。当我删除多余的web.config时,错误消失了
Dio Phung

Answers:


96

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

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

  1. 在解决方案配置为发布模式时清洁解决方案。
  2. 在调试模式下配置解决方案时,请清洁解决方案。
  3. 在将解决方案配置为“调试”模式时进行构建。

18
也只对我有用的答案。在此之后,我还有许多其他错误等待着我,但它们无关。我通过设置MvcBuildViews为到达这里true
本杰明·

+1 BTW:我认为这对我有用的原因是我拥有的最新版本是Debug。我打开了解决方案,进行了错误修复,并尝试在R Release模式下进行构建。在Release中进行清理不起作用,但是在Debug中进行清理。(可能需要2的组合,即清除dll的所有旧引用,无论是Debug还是Release)。
Scotty.NET 2013年

4
我做了一个干净的工作,然后转到*项目属性->
Web-

我需要在调试模式下进行清理和重建。无需在发布和调试之间来回切换。但是,是的,清洁非常重要。这就是问题的核心。
markaaronky

1
就我而言,“清洁”功能是我从未见过的。这是一个非常老的VB.NET应用程序,是我从一位前同事那里继承而来的。
tnk479

82

刚刚碰到这篇文章,那在我身上发生了。
只是Clean项目,错误就消失了。(必须是VS2010错误)


如果您在Visual Studio中将其作为错误得到此解决方案。
gideon

22
有时清理不会清除obj文件夹。有时也需要删除。
jaypeagi

1
清除或删除obj均无效。Johnny Reilly的解决方案为我工作。
本杰明

我必须在调试和发布模式下都运行干净才能摆脱这种情况。仅出于调试目的运行它似乎无法解决问题。
JuhaPalomäki2013年

VS2013SP1中仍然存在相同的问题。简单的清理就可以让我再次部署。
Brian Knoblauch 2014年

25

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

我刚刚删除了bin和obj文件夹,运行“干净解决方案”并再次构建它,这次没有任何问题。


2
这是在VS Express 2012 for Web中对我有用的唯一解决方案。同样,在创建解决方案配置并将MvcBuildViews设置为true到.csproj源中的PropertyGroup之后,才开始出现此错误。
杰里米·库克

20

没有。您需要在IIS中设置将网站作为Web应用程序放置的目录。


1
尽管从技术上讲,这是“在其他地方进行此工作”的更改;)
Zhaph-Ben Duguid 2010年

2
如果您在网络应用程序中将其作为错误得到解决,这就是解决方案!= P
gideon

我已经被设置为应用程序。Johnny Reilly的解决方案适用于我的情况。
本杰明·

我只是想让模板Webforms应用程序正常工作。可以在localhost上使用,但不能在LAN上的服务器上使用。该解决方案为我工作:VS2015 CE,LAN上的Windows Server 2008。我使用此MS页来说明如何在IIS上执行:support.microsoft.com/en-gb/kb/917413。无需更改模板代码。
蒂姆(Tim)

16

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

只是要添加一下,当我尝试打开一个项目时,我刚刚遇到了此错误,我从Visual Studio菜单中选择“文件”,“打开网站”,而我应该选择“文件”,“打开项目”代替。我一意识到我就脸红了:)


这也是我的问题
mgrenier 2014年

13

在Visual Studio 2013中,我花了一段时间努力解决这个问题,很容易解决,只需遵循例外说明 “虚拟目录未在IIS中配置为应用程序”的内容即可。

在我来说,我已经WebService栽内IIS website如此

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

WCF已返回并正在运行。


1
当我将应用程序移至默认网站时遇到了此问题。第三点解决了我的问题。
比克拉姆。

当我们移至新的Web服务器时,这对我有用。完成“转换为应用程序”后,文件夹符号更改,并且ASP.NET MVC Web应用程序开始在该Web服务器上工作。
Greg Barth

11

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

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


8
删除较低目录中的第二个web.config对我来说解决了这个问题。
卢卡斯B

10
我的一个家伙有他<authentication mode="Forms"><forms name="..." loginUrl="~/Login/Login/" timeout="2880" /></authentication>在他Web.configViews而不是主干文件夹,导致了这一问题。
Serj Sagan

10

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

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

这是文章:如何在构建或部署之前删除bin和/或obj文件夹


8

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

<machineKey...>已将一个属性添加到Views / web.config中。不管有多少清理和重建错误仍然存​​在。解决方法是将属性移到根目录/web.config中


我们不小心将父Web.config复制到/ Views文件夹中。将原始的,小得多的版本放在“视图”文件夹中,然后该站点再次工作。
Grandizer '16

6

如果您遇到此错误

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

解决方案
我在VS 2012中遇到了同样的问题。

  1. 卸载当前项目
  2. 编辑您的.csproj
  3. 找到这个 <MvcBuildViews>false</MvcBuildViews>
  4. 将值更改为true而不是false
  5. 再次加载您的项目,您将不再有此错误

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


18
太奇怪了,设置MvcBuildViews为首先true是如何得到错误的。
本杰明·

将MvcBuildViews更改为true后,我也开始收到错误消息。我通过将值改回false摆脱了错误消息。
JuhaPalomäki2013年

3
我在发布和调试模式下做了一个“清洁解决方案”,现在该构建也可以与<MvcBuildViews>true</MvcBuildViews>
JuhaPalomäki2013年

@JuhaPalomäki超级甜蜜!谢谢。
Haroon

我遇到的情况与@visar_uruqi完全相反。我的意思是,在我的.csproj文件中,我将MvcBuildViews选项设置为true,当我将其设置为false时,错误被忽略(未显示)。
Bronek

5

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

显然,web_publishWeb.config包含与项目包含的相同的。但是,web_project不知道在嵌套子目录中web_publish搜索Web.configs 时应避免使用my 。这样,Web.configs被复制并出现错误。

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


5

在我的情况下,有一个“备份”文件夹,其中包含整个网站的另一个副本。这意味着另一个web.config,因此构建因此错误而失败。我删除了“备份”文件夹,在“调试和发布”版本中执行了“干净”解决方案,错误消失了。


我也遇到类似的情况,有人在磁盘上的网站根目录内创建了一个“已发布”子文件夹(这是一个旧的Web项目,其中一个没有解决方案文件),并且其中包含一个Web.config。当Visual Studio尝试构建它时发生了错误,当然,没有任何清理/删除“ obj”文件夹等内容的错误。我已经看到过很多该错误的实例,并且几乎总是一个重复的Web.config隐藏在某个地方...(以及错误消息的
详细信息

4

就我而言

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

在子目录中运行任何页面时,出现相同的错误。

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

<authentication mode="Windows"/>

对我有用。


您删除了哪条线?
马克·贝里

该行在那里,但由于某些缩进问题而没有显示。我将代码编辑并粘贴到了代码块中,现在显示出来。请检查并告知我是否可以提供帮助。
2013年

谢谢,那也证实了那行对我来说也是失败的。我只有一个站点,因此我通过以网站而不是项目的形式打开了它。
马克·贝里

4

清理项目删除/ obj文件夹(可能使用发布和部署?-其中存在错误)


唯一对我有用的解决方案。通过设置<MvcBuildViews> true </ MvcBuildViews>到此处。
保罗

3

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

我已经发布到名为PreCompiledWeb的文件夹,并且怀疑web.config的存在将其弄乱了。

我只是对文件夹进行了修改,然后刷新了项目。

双击此错误时,它带我到了错误的web.config文件,该文件提示了我。


2

可能是版本问题,例如您下载.Net framework 2.0项目并想将其打开到VS2008中,然后需要升级到最新版本,VS会在同一根目录中创建该文件夹的备份。在这里得到答案。


ranganh的答案在此处提供了更多详细信息。
Mark Berry

2

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


2

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


对于文件资源管理器,请使用搜索查询“ obj” kind:= folder和“ bin” kind:= folder查找/删除这些文件夹。这对我有用。
罗伯特·J·古德

2

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

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


1

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



1

如果在项目文件中启用了“ true”,则这个问题会更加频繁。

  1. 设为假

正如乔尼所说:

  1. 在解决方案配置为发布模式时清洁解决方案。
  2. 在调试模式下配置解决方案时,请清洁解决方案。
  3. 在将解决方案配置为“调试”模式时进行构建。

1

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


1

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


4
嗨,欢迎来到Stack Overflow!你能扩大答案吗?您能否解释一下如何将文件夹转换为Web应用程序?这将帮助其他人更好地理解您的答案。
Jesse 2013年

1
在IIS管理器的右侧“连接”窗格下,右键单击所创建的站点(或“默认网站”)下的目录,然后选择Convert to Application
Aske B.


1

我有一个网站项目。

就我而言,我已经将解决​​方案文件移到了另一个路径,这导致了问题。我将其还原到以前的位置,问题就解决了。


1

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


1

通过Visual Studio,我已经通过FTP将WCF服务发布到了外部服务器。在本地以及发布到内部服务器而不是外部服务器时,它都可以正常工作。解决方案是不提供发布 就进行发布Site Path(换句话说,直接发布到虚拟目录的根目录)。

我不确定为什么它能工作,因为我已经尝试过通过外部FTP客户端将文件移至根目录-其他许多尝试,包括此处列出的所有尝试。也许这与发布个人资料有关,就像FabianVal一样。但是我现在不打算进行测试了,因为在所有时间都浪费在这个问题上之后,我急于加快速度。


0

提示1:清理然后重建。

提示2:关闭VS,然后再次打开。

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

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

您应该从vs打开演示,而不是demo1。


0

我尝试了以上所有解决方案,但没有一个解决我的问题。(我确定有1000个解决此问题的方法)对于我的情况,我试图将测试中的WCF Web服务发布到生产环境中。

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.