Msbuild 生成失败:aspnet\u client\system\u web\4\u 0\u 30319

Msbuild 生成失败:aspnet\u client\system\u web\4\u 0\u 30319,msbuild,teamcity,Msbuild,Teamcity,我有一个构建步骤,它是部署配置的一部分。我的同事告诉我,它非常有效 在运行此构建步骤时,我不断地出现此错误: Deleting dirPath (qa.comedy.net\aspnet_client\system_web\4_0_30319). [15:22:22]: [VSMSDeploy] C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.\We \Microsoft.Web.Publishing.targets(358

我有一个构建步骤,它是部署配置的一部分。我的同事告诉我,它非常有效

在运行此构建步骤时,我不断地出现此错误:

Deleting dirPath (qa.comedy.net\aspnet_client\system_web\4_0_30319). [15:22:22]: 

[VSMSDeploy] C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.\We
\Microsoft.Web.Publishing.targets(3588, 5): Web deployment task failed.((3/28/2012 3:22:22 PM) An error occurred when the request was processed on the remote computer.)

Attempt to perform an unauthorized operation on file '4_0_30319'.
似乎它正在尝试删除该文件夹 aspnet\u client\system\u web\4\u 0\u 30319,但无权访问

我们在虚拟机上运行这个构建

对如何解决这个问题有什么建议吗

非常感谢您的帮助


谢谢

我在使用msdeploy和teamcity部署as站点时遇到了这个问题。我通过从我的网站上删除这些文件夹解决了这个问题,我没有使用TeamCity,但我想我也有这个问题。我试图使用VS2010 WebDeploy部署到ASP.NET。在阅读了doglin和Dan的帖子后,我发现我可以通过选中“在目的地保留额外文件(不要删除)”框来解决这个问题。这可能不是每个人的选择,但对我来说是可行的

我在TeamCity的WebDeploy中遇到了同样的问题。我最终提升了WebDeploy帐户的权限,在该帐户下我执行WebDeploy任务。因此,帐户有足够的权限删除这些文件夹(本地管理员角色)。

是的,您可以删除此文件夹,下一次部署将正常工作,但在下一次windows更新中,作为安装的一部分运行asp.net注册工具,将此文件夹添加回IIS上的所有asp.net站点(权限不正确)-因此您的部署将再次失败。你可以通过

  • 给予部署用户提升的权限(这不是一个很好的解决方案 显而易见的原因)
  • 将文件夹结构添加到您的SC,使其 部署,而不是尝试删除它的部署(不理想,但最简单)
  • 停止自动windows更新(不合理)
  • 你也许能做到 像这样的 忽略部署中的文件夹(我没有尝试过)
作为一种解决方法,只需忽略该目录即可。事实上,这是最简单的修复方法,不需要向源代码管理存储库或生成输出中添加任何内容。只需将以下内容添加到msdeploy.exe命令中:


-skip:Directory=“aspnet\u client”

我在使用ftp发布时遇到了完全相同的问题。在删除阶段之后,在远程服务器上创建了上述文件夹结构。我不知道为什么。它以前从未这样做过。我只是简单地删除了上面的文件夹,保持根目录不变,然后再次尝试发布,它成功了。这很好,但你必须继续这样做,因为自动更新会重复地将文件夹添加回。请参阅我的答案,了解一些永久性解决方案。如果执行“whatif”测试,Web Deploy是否会删除此文件夹结构?我已经遇到过几次,最后给出了您的第二个建议:手动删除文件夹后,我向SC添加了一个
aspnet\u client\system\u web\u 4\u 0\u 30319\placeholder.txt
,以便创建文件夹。实际上我只是在文本文件中链接到这篇文章。同意这并不理想,但自动运行并向部署的应用程序添加随机文件的ASP工具也不理想。@gregmac我确实认为更新添加此文件夹是一个错误。这不应该发生,嗨!您在何处进行此更改?@Patrick无论您的部署命令存储在何处,例如构建应用程序、CI应用程序;运行
msdeploy
命令的内容。