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

时间:2010-03-01 13:07:26

标签: asp.net visual-studio-2012

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

  

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

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

36 个答案:

答案 0 :(得分:98)

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

始终如一地解决我发现的问题的唯一方法是遵循此核对清单:

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

答案 1 :(得分:83)

刚遇到this post而且发生在我身上 只需Clean项目,错误就会消失。 (必须是VS2010错误)

答案 2 :(得分:24)

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

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

答案 3 :(得分:20)

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

答案 4 :(得分:16)

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

只是添加,我刚刚尝试通过从Visual Studio菜单中选择“文件”,“打开网站”来创建我创建的项目时遇到此错误,而我应该选择“文件”,“打开项目“而不是。一旦我意识到,我就面对面了。)

答案 5 :(得分:12)

在Visual Studio 2013中,我一直在努力解决这个问题很容易解决只是遵循例外情况 "虚拟目录未被配置为应用程序在IIS"

在我的情况下,我WebService种植了IIS website所以

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

    WCF重新开始运行。

答案 6 :(得分:10)

如果您有启用了视图构建的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

答案 7 :(得分:10)

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

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

答案 8 :(得分:8)

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

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

答案 9 :(得分:6)

如果您遇到此错误

  

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


我和VS 2012有同样的问题。 我通过

解决了这个问题
  1. 卸载您当前的项目
  2. 编辑.csproj
  3. 查找此<MvcBuildViews>false</MvcBuildViews>
  4. 而不是 false 将值更改为 true
  5. 再次加载您的项目,您不应再有此错误
  6. 如果你有,那么一个解决方案就是删除编译器生成的项目中obj文件夹的内容。

答案 10 :(得分:5)

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

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

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

答案 11 :(得分:4)

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

答案 12 :(得分:4)

就我而言,

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

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

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

<authentication mode="Windows"/>

对我有用。

答案 13 :(得分:3)

我的问题是我在新安装的VS2010上意外地将我的网络服务发布到预先完成的位置。

我发布了一个名为 PreCompiledWeb 的文件夹,并且我怀疑它存在web.config。

我只是修改了文件夹,并刷新了项目。

当双击此错误时 - 它转到了那个错误的web.config文件,这让我感到很沮丧。

答案 14 :(得分:3)

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

答案 15 :(得分:2)

显然我的解决方案中有两个web.config文件。我正在使用MVC4,在Views下有另一个配置文件,我正在更改错误的文件。修复了帮助我。

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

答案 16 :(得分:2)

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

答案 17 :(得分:2)

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

答案 18 :(得分:2)

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

答案 19 :(得分:1)

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

答案 20 :(得分:1)

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

答案 21 :(得分:1)

我有一个网站项目。

在我的情况下,我已将解决方案文件移动到另一条路径并导致问题。我将它恢复到以前的位置,问题就出来了。

答案 22 :(得分:1)

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

解决了这个问题

答案 23 :(得分:1)

通过Visual Studio,我有published a WCF Service via FTP到外部服务器。它在本地工作正常,并且在发布到内部服务器时,但不发布到外部服务器。解决方案是发布而不提供 Site Path(换句话说,直接发布到虚拟目录的根目录)。

我不确定它为什么会起作用,因为我已经尝试通过外部FTP客户端将文件移动到根目录 - 在许多其他尝试中,包括此处列出的所有内容。也许它与发布配置文件有关,就像FabianVal一样。但是我现在已经没有进行测试的心情,因为在这个问题浪费了所有的日子之后,我急着赶快速度。

答案 24 :(得分:1)

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

答案 25 :(得分:1)

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

  1. 设置为false
  2. 正如强尼所说:

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

答案 26 :(得分:1)

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

答案 27 :(得分:1)

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

答案 28 :(得分:0)

在我的情况下,我主持GoDaddy这不是问题,但它增加了一层混乱。

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

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

所以我必须将GeoLocateSpecials设置为应用程序根目录,并且从那里开始工作很好。

希望能帮助其他人。

答案 29 :(得分:0)

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

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

我希望能帮助一些贫穷的灵魂试图找出这个问题。

答案 30 :(得分:0)

我在发布网站时遇到了同样的问题,如果我构建网站我没有遇到任何问题,但在发布时我会收到这个可怕的错误:

  

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

我尝试过这篇文章中所说的所有内容都没有诉诸,对我来说有用的只是创建一个与我一直使用的完全相同的新发布配置文件,并且运行良好,不要使用新配置文件获取错误但使用旧配置文件。不确定区别是什么,但至少我可以发布我的MVC项目。

希望这有助于某人!

答案 31 :(得分:0)

从项目文件夹中删除Crystal Reports备份文件后,它对我有效。

答案 32 :(得分:0)

提示1:清洁&amp;然后重建。

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

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

C:/ demo1的/演示/ (所有文件)

您必须从vs ...而不是demo1打开演示。

答案 33 :(得分:0)

在我们的案例中,我们将站点部署到服务器,该服务器在其他服务器上进行复制。在部署环境中的所有服务器上执行IISRESET。

答案 34 :(得分:0)

我遇到了同样的问题,因为会自动为父文件夹创建一个新的全局Web.Config。它是\ Website \ Website。

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

答案 35 :(得分:0)

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

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

<块引用>
Build Action - Content
Copy to Output - Do not Copy

enter image description here