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

我已经下载了ASP.NET中的在线项目。在运行应用程序时,我得到一个错误

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

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

346596 次浏览

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

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

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

您可能在未配置为虚拟目录的项目文件夹中有一个子ASP.NET项目文件夹。将项目设置为在IIS中运行。

只是遇到了这个帖子,这是发生在我身上。
只需Clean项目,错误就会消失。(一定是VS2010的bug)

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

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

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

提示1:清洁那就重建。

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

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

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

你应该从VS..打开演示。不是Demo1。

最近的Web.config更改可能位于错误的Web.config文件中。

<machineKey...>性质添加到views/web.config中。无论进行多少次清理和重建,错误仍然存在。修复方法是将属性移到根/web.config中。

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

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

  1. 清洁解决方案,同时在发布模式下配置解决方案。
  2. 清洁解决方案,同时在调试模式下配置您的解决方案。
  3. 在调试模式下配置解决方案时生成。

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

  1. 设置False

正如Jonny所说:

  1. 清洁解决方案,同时在发布模式下配置解决方案。
  2. 清洁解决方案,同时在调试模式下配置您的解决方案。
  3. 在调试模式下配置解决方案时生成。

这可能是版本问题,例如您下载了.NET Framework 2.0的项目,并希望在VS2008中打开它,那么您需要升级到最新版本,VS将在同一根目录中创建文件夹的备份。您将得到在这里的答案。

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

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

补充一下,当我试图通过从Visual Studio菜单中选择“文件”、“打开网站”来打开我之前创建的项目时,我遇到了这个错误,而我应该选择“文件”、“打开项目”。当我意识到这一点时,我就开始紧张了:)

就我而言,

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

当运行子目录中的任何页面时,我得到相同的错误。

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

<authentication mode="Windows"/>

这对我很有效。

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

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

我发布到了一个名为__abc0的文件夹,我怀疑web.config的存在把它搞乱了。

我只是删除了文件夹,并刷新了项目。

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

清理您的项目 删除/obj文件夹(可能使用Publish and Deploy?-其中有一个错误)

如果您遇到此错误

使用注册为的节

是错误的 AllowDefinition=' MachineToApplication '超出应用程序级别。这 错误可能是由于虚拟目录未配置为 IIS

中的应用

解决方案
我在VS2012也遇到了同样的问题。 我解决了这个问题

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

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

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

我尝试了上面所有的解决方案,但没有一个能解决我的问题。(我相信这个问题有1000个解决方案)在我的场景中,我尝试将测试中的WCF Web服务发布到生产中。

然而,我没有意识到在生产中我们只使用HTTPS,这意味着我们将所有内容都重定向到HTTPS.事实证明,我是通过HTTP而不是HTTPS指向服务的,因此导致了错误。此场景中的解决方案只是将地址协议更改为HTTPS而不是HTTP.

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

在我的例子中,我是用GoDaddy主持的,这不是问题,但它增加了一层混乱。

我有一个根文件夹“ webservices ”,并将其设置为应用程序根。

但是,该服务位于名为“ Geolocatespecials ”的子文件夹中,因为“ WebServices ”文件夹是许多服务的容器。

因此,我必须将Geolocatespecials设置为应用程序根,它从那里开始工作得很好。

希望这对其他人有所帮助。

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

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

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

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

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

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

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

我有一个网站项目。

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

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

当我发布网站时,我也遇到了同样的问题,如果我建立网站,我不会遇到任何问题,但在发布时,我会遇到这个可怕的错误:

使用注册为的节

是错误的 AllowDefinition=' MachineToApplication '超出应用程序级别。这 错误可能是由于虚拟目录未配置为 IIS

中的应用

我尝试了这篇文章中提到的所有方法,对我来说,最有效的方法是创建一个新的发布配置文件,与我一直使用的配置文件完全相同,效果很好,新配置文件不会出错,但旧配置文件会出错。不知道有什么区别,但至少我可以发布我的MVC项目。

希望这对某人有所帮助!

在VisualStudio2013中,我在这个问题上挣扎了一段时间,解决只要按照例外所说的去做。“虚拟目录未配置为IIS中的应用程序”非常容易。

在我的例子中,我将WebService植入IIS website中,所以

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

WCF已恢复运行。

从项目文件夹中删除Crystal Reports备份文件后,它正在为我工作。

在我的例子中,问题只出现在子目录的__abc2中。由于缺乏相关知识,我将__abc0子目录放在了__abc1目录中。

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

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

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

在我们的示例中,我们将站点部署到跨其他服务器复制的服务器上。在部署环境中的所有服务器上执行IISReset成功。

我也遇到了同样的问题,因为会自动为父文件夹创建一个新的全局web.config.它是\网站\网站。

在我将所有文件从子文件夹移动到父文件夹并删除子文件夹后,现在我只有一个web.config,问题解决了。

通过VisualStudio,我将ABC1__到外部服务器。它在本地工作得很好,发布到内部服务器时也很好,但不能发布到外部服务器。解决方案是发布而不提供Site Path(换句话说,直接发布到虚拟目录的根目录)。

我不知道它为什么工作,因为我已经尝试通过外部FTP客户端将文件移动到根目录-在许多其他尝试中,包括这里列出的所有尝试。也许它与发布配置文件有关,就像法比安瓦尔一样。但在这一点上,我没有心情再测试了,因为在这个问题上浪费了这么多天后,我急于加快速度。

同一项目中的多个web.config会产生此问题,这可能是由于Area,views文件夹而在内部/中创建的。

解决方案可能是将main/root web.config设置更改为:

Build Action - Content
Copy to Output - Do not Copy

enter image description here