17

当我尝试发布我的 Web 应用程序时,我正在使用 Visual Studio 2012,我收到以下错误:

Error   1   It is an error to use a section registered as allowDefinition='MachineToApplication' beyond application level.  This error can be caused by a virtual directory not being configured as an application in IIS.  E:\Temp\BUILD\Debug\AspnetCompileMerge\Source\bin\web.config    24  0   Pixelate

这是输出窗口的内容:

1>------ Build started: Project: Pixelate, Configuration: Debug Any CPU ------
1>  No way to resolve conflict between "System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=969db8053d3322ac, Retargetable=Yes" and "System.Core, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e". Choosing "System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=969db8053d3322ac, Retargetable=Yes" arbitrarily.
1>  No way to resolve conflict between "System.ServiceModel.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" and "System.ServiceModel.Web, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e". Choosing "System.ServiceModel.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" arbitrarily.
1>  Pixelate -> [...]\bin\TwistedPixel.Pixelate.dll
1>  '[...]\bin'
1>  CMD.EXE was started with the above path as the current directory.
1>  UNC paths are not supported.  Defaulting to Windows directory.
2>------ Publish started: Project: Pixelate, Configuration: Debug Any CPU ------
2>Connecting to [...]...
2>Transformed Web.config using [...]\Web.Debug.config into E:\Temp\BUILD\Debug\TransformWebConfig\transformed\Web.config.
2>Transformed[...]\Web.config using [...]\bin\Web.Debug.config into E:\Temp\BUILD\Debug\TransformWebConfig\transformed\bin\Web.config.
2>Copying all files to temporary location below for package/publish:
2>E:\Temp\BUILD\Debug\AspnetCompileMerge\Source.
2>C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_compiler.exe -v / -p E:\Temp\BUILD\Debug\AspnetCompileMerge\Source -c -d E:\Temp\BUILD\Debug\AspnetCompileMerge\TempBuildDir 
2>E:\Temp\BUILD\Debug\AspnetCompileMerge\Source\bin\web.config(24,0): Error ASPCONFIG: It is an error to use a section registered as allowDefinition='MachineToApplication' beyond application level.  This error can be caused by a virtual directory not being configured as an application in IIS.
2>
========== Build: 1 succeeded, 0 failed, 2 up-to-date, 0 skipped ==========
========== Publish: 0 succeeded, 1 failed, 0 skipped ==========

如果有人可以阐明为什么会发生这种情况以及如何解决它,那就太好了。

我试过清理和重建(它重建得很好)我试过删除 bin、obj 并移动了临时输出目录 - 错误仍然存​​在。

4

5 回答 5

28

web.config这是发布过程创建的额外内容的问题。将鼠标悬停在 选项卡上web.config,您将看到额外文件的位置,然后您可以清除该位置。甚至可能是针对不同的配置,但它仍然会引发错误(例如调试与发布),可能类似于<app>\obj\Release\Package\PackageTmp\web.config.

删除它,你应该很高兴。不过可能会在以后的发布中再次出现。

于 2012-11-06T15:33:17.840 回答
9

这似乎是一个非常常见的问题,当这是由 Visual Studio 中的 Web 发布功能创建的额外 web.config 引起的时,错误消息绝对没有帮助。

我能够通过强制我的 ASP.NET 应用程序项目在每次构建后清除 obj 目录来克服这些问题。

将以下内容添加到您的构建后事件中,并运行构建后事件:“始终”

rmdir /S /Q "$(ProjectDir)\obj"
于 2014-07-07T16:43:44.947 回答
0

您的 web.config 中的一项设置存在问题。该错误可能会让您了解该位置。

于 2012-10-19T08:40:08.893 回答
0

这个问题是关于默认命名空间更改的。如果你改变旧的,它将被修复。

在此处输入图像描述

于 2020-10-20T07:47:42.320 回答
0

在您的解决方案配置为发布模式时清洁解决方案。

在调试模式下配置您的解决方案时清洁解决方案。

在调试模式下配置您的解决方案时构建。

于 2017-05-16T12:58:13.653 回答