编译ASP.NET网站时出现MSBuild错误

23

使用自定义的构建脚本编译一个 asp.net 站点时,我遇到了以下错误。

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.

尽管描述很详细,但我确切地不明白它的含义。我没有配置IIS来托管这个网站,而且我认为我也做不到,因为我正在运行Vista Home Basic版本。所以这个网站不能使用自定义脚本构建?请回复,因为我想测试这个功能。


我也曾删除obj文件夹,直到我遇到了一个需要它的构建脚本冲突的情况。这是个进退两难的局面,但我在以下SO链接中使用了被接受的答案,将Obj文件夹的位置移动到C:\Temp\BUILD。你必须对每个csproj文件进行操作,但这是一个很好的解决方案。这是链接:https://dev59.com/LXVC5IYBdhLWcg3wixs0 - Valamas
可能是[allowDefinition='MachineToApplication' msbuild error]的重复问题。请参考此链接:https://dev59.com/qm435IYBdhLWcg3wrSPN - Flexo
5个回答

48

我曾经遇到了完全相同的问题,最终发现一个流氓的 Web.config 文件被放在了我的 obj 文件夹中... 为自己着想,搜索所有子目录中的 web.config 文件。 我删除了它,一切又恢复正常。


4
谢谢,这样解决了我的问题。我也遇到了同样的问题。我删除了 object\debug 文件夹,然后它又正常工作了。 - Michael Wells
4
+1 - 不错,谢谢。另外需要注意的是,在转换时如果在项目中创建了备份文件夹,你还需要删除/重命名其中的 web.config 文件。 - Kyle Rosendo
1
谢谢!这让我疯了几个小时。我的迷失的web.config在/views文件夹中。叹气 - Patricia
4
@Patricia,这在ASP.NET MVC中很正常——更可能是通过执行发布操作创建的obj文件夹中的web.config。 - Daniel O
1
@DanielO -- 我试图给你的评论点赞,因为它正是我遇到的问题。确实,发布是问题的根源。 - Jim Raden
显示剩余4条评论

15

当你发布网站时,obj文件夹中的恶意web.config文件很可能会导致此问题。因此,在完成发布之后,请立即清理它。


5
如果虚拟目录已创建,出现此问题,请执行以下操作:
  • 右键单击web.config
    • 属性
      • 生成操作:内容
      • 复制到输出目录:不复制
  • 如果有转换(应用于所有配置)
    • 属性
      • 生成操作:无
      • 复制到输出目录:不复制

第一个选项对我来说很好用,即使我有Web配置转换。 - Nekresh
这个问题困扰了我很长时间。原来是这个问题! - FrankyBoy

4
很可能您的web.config文件不在应用程序的根目录中。在大多数版本的IIS上,您可以将网站上的任何文件夹转换为应用程序根目录:
  1. 打开IIS并导航到适当的文件夹
  2. 右键单击该文件夹,选择属性
  3. 在应用程序设置下,旁边的应用程序名称,点击创建
  4. 应用并关闭
如果这不能解决您的问题,可能存在另一个配置错误,要么是与IIS有关,要么是与您的应用程序有关。

0
在IIS中,进入应用程序运行的文件夹,右键点击它,选择属性。在目录选项卡中,查找“应用程序设置”。单击创建按钮。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接