195

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

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

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

4

36 回答 36

97

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

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

  1. 在您的解决方案配置为发布模式时清洁解决方案。
  2. 在调试模式下配置您的解决方案时清洁解决方案。
  3. 在调试模式下配置您的解决方案时构建。
于 2012-09-03T08:45:10.963 回答
82

刚看到这篇文章,这发生在我身上。
只是Clean项目和错误消失了。(一定是VS2010的bug)

于 2010-05-24T13:09:42.563 回答
25

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

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

于 2011-07-21T10:51:47.150 回答
20

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

于 2010-03-01T13:12:07.337 回答
16

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

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

于 2012-10-09T19:27:41.707 回答
13

在 Visual Studio 2013 中,我为此苦苦挣扎了一段时间,只需遵循异常所说的 “虚拟目录未在 IIS 中配置为应用程序”,就很容易解决

就我而言,我种WebService在里面IIS website

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

WCF 又回来了,并且正在运行。

于 2014-11-20T15:24:37.703 回答
12

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

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

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

于 2014-03-10T17:18:51.210 回答
11

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

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

于 2010-03-01T13:11:06.350 回答
8

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

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

于 2012-08-08T18:51:58.427 回答
6

如果您遇到此错误

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

解决方案
我在 VS 2012 上遇到了同样的问题。我通过以下方式解决了这个问题

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

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

于 2013-03-01T09:40:44.110 回答
5

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

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

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

于 2015-03-20T17:27:19.920 回答
5

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

于 2015-07-06T14:45:15.697 回答
4

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

于 2013-02-20T10:09:10.730 回答
4

就我而言,

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

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

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

<authentication mode="Windows"/>

这对我有用。

于 2012-11-17T16:13:46.870 回答
3

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

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

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

当双击这个错误时——它把我带到了那个错误的 web.config 文件,这让我失望了。

于 2013-01-17T17:10:14.713 回答
2

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

于 2014-01-19T01:50:28.930 回答
2

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

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

于 2014-06-05T18:46:01.733 回答
2

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

于 2012-09-30T03:30:26.703 回答
2

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

于 2012-09-25T10:42:52.707 回答
1

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

  1. 设置为假

正如乔尼所说:

  1. 在您的解决方案配置为发布模式时清洁解决方案。
  2. 在调试模式下配置您的解决方案时清洁解决方案。
  3. 在调试模式下配置您的解决方案时构建。
于 2012-09-17T05:39:32.977 回答
1

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

于 2011-08-05T00:40:03.767 回答
1

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

于 2010-03-01T13:16:13.630 回答
1

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

于 2014-07-16T09:10:20.787 回答
1

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

于 2012-12-20T10:57:36.520 回答
1

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

于 2014-06-17T12:44:43.187 回答
1

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

于 2013-03-02T13:25:30.227 回答
1

我有一个网站项目。

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

于 2014-07-08T13:11:34.897 回答
1

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

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

于 2016-10-03T12:23:37.337 回答
0

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

于 2014-12-22T05:20:24.793 回答
0

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

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

我希望这可以帮助一些试图解决这个问题的可怜的灵魂。

于 2013-05-14T12:44:49.617 回答
0

在我的情况下,我使用 GoDaddy 进行托管,这不是问题,但它增加了一层混乱。

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

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

所以我不得不将 GeoLocateSpecials 设置为应用程序根,它从那里开始工作得很好。

希望能帮助其他人。

于 2013-10-24T13:43:08.537 回答
0

提示1:清理然后重建。

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

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

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

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

于 2012-08-01T13:41:38.377 回答
0

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

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

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

希望这对某人有帮助!

于 2014-08-13T22:11:52.623 回答
0

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

于 2016-01-05T17:12:01.300 回答
0

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

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

于 2016-04-20T21:20:58.700 回答
0

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

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

Build Action - Content
Copy to Output - Do not Copy

在此处输入图像描述

于 2021-04-27T06:05:16.880 回答