msbuild - msdeploy 错误 ERROR_USER_UNAUTHORIZED : Web deployment task failed

标签 msbuild tfs-2015 msdeploy microsoft-web-deploy

Web 部署任务失败。错误 ERROR_USER_UNAUTHORIZED

我们使用 Tfs Build Automation 和 msdeploy 在远程计算机上发布 Web 应用程序。

在“Visual Studio Build”步骤中,我们在“MSBuild Arguments”上设置了这个参数: /p:DeployOnBuild=true;PublishProfile=myProfile;AllowUntrustedCertificate=true;UserName=$(用户名);Password=$(密码)

构建完成后,我们得到这个错误:

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\Web\Microsoft.Web.Publishing.targets(4276,5):错误 ERROR_USER_UNAUTHORIZED:Web 部署任务失败。 (使用 Web 管理服务连接到远程计算机(“MySERVER”),但无法授权。确保您使用的用户名和密码正确,您要连接的站点存在,并且凭据代表有权访问该网站的用户。了解更多信息:http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_USER_UNAUTHORIZED。)

我确定用户名和密码是正确的,并且用户是服务器(MySERVER)上的管理员。

我检查了 IIS 上的管理服务日志,发现了一些重要的东西: 构建代理的用户名 (tfsadmin) 发送到 IIS 上进行部署,而不是我在构建变量中设置的用户/密码。

字段:日期时间 s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) cs(Referer) sc-status sc-substatus sc- win32-status 耗时

2018-01-03 09:29:02 MYSERVERIP HEAD/msdeploy.axd site=MySiteName 8172 - MyBuildServerIP - - 401 2 5 1322 2018-01-03 09:29:02 MYSERVERIP HEAD/msdeploy.axd site=MySiteName 8172 tfsadmin MyBuildServerIP - - 401 1 1326 86

更新 1: 我添加了更多信息,如您在下面的构建日志中所见,在 msBuildArgs 中密码为空(而不是 ********)!

网络部署版本:3.6 TFS 版本:2015.1 目标机器(MySERVER):Windows 2012 R2 IIS 版本:8.5 “tfsadmin”用户具有目标服务器 (MyServer) 的本地管理员和目标 IIS 站点上的 IIS 管理员权限。

构建日志:

2018-01-06T06:37:19.9298797Z Starting task: Build solution $/MyProject/MySolution.sln
2018-01-06T06:37:20.0529203Z Executing the powershell script: D:\Agents\Agent-01\tasks\VSBuild\1.0.16\VSBuild.ps1
2018-01-06T06:37:20.3760645Z ##[debug]Entering script VSBuild.ps1
2018-01-06T06:37:20.3790648Z ##[debug]vsLocation = 
2018-01-06T06:37:20.3800653Z ##[debug]vsVersion = 14.0
2018-01-06T06:37:20.3810663Z ##[debug]msBuildLocation = 
2018-01-06T06:37:20.3820668Z ##[debug]msBuildVersion = 
2018-01-06T06:37:20.3830692Z ##[debug]msBuildArchitecture = x64
2018-01-06T06:37:20.3840679Z ##[debug]msBuildArgs = /p:DeployOnBuild=true;PublishProfile=myProfile;AllowUntrustedCertificate=true;UserName=tfsadmin;Password=;Pass2=********
2018-01-06T06:37:20.3840679Z ##[debug]solution = D:\Agents\Agent-01\_work\2\s\MyProject\MySolution.sln
2018-01-06T06:37:20.3860721Z ##[debug]platform = 
2018-01-06T06:37:20.3870700Z ##[debug]configuration = 
2018-01-06T06:37:20.3880727Z ##[debug]clean = true
2018-01-06T06:37:20.3890697Z ##[debug]restoreNugetPackages = true
2018-01-06T06:37:20.3890697Z ##[debug]logProjectEvents = true
2018-01-06T06:37:20.4010877Z ##[debug]Loading module from path 'D:\Agents\Agent-01\agent\worker\Modules\Microsoft.TeamFoundation.DistributedTask.Task.Internal\Microsoft.TeamFoundation.DistributedTask.Task.Internal.dll'.
...

谁能帮帮我?

最佳答案

您是正确的,最终使用了错误的用户名和密码来验证请求。运行命令 net helpmsg 1326(1326 是您提供的日志条目中的 sc-win32-status 值)会产生“用户名或密码不正确。

同样有趣的是在此之前记录的请求/响应。根据 TechNet,401 的子状态值 2 表示“由于服务器配置支持备用身份验证方法,访​​问被拒绝。” .并且 net helpmsg 1322 产生“不允许此操作,因为它可能导致管理帐户被禁用、删除或无法登录。

  1. 查看(或重新查看)https://learn.microsoft.com/en-us/iis/publish/using-web-deploy/configure-the-web-deployment-handler 中的说明
  2. 如果您的部署仍然无法正常工作,请查看 Microsoft's Troubleshooting Common Problems with Web Deploy .

关于msbuild - msdeploy 错误 ERROR_USER_UNAUTHORIZED : Web deployment task failed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48075599/

相关文章:

powershell - 通过Powershell作为命令行参数传递时不考虑Msbuild属性

tfsbuild - 您如何使 TeamBuild 2015 多个配置选项不适用于所有步骤?

msbuild - 使用 msdeploy 和 Visual Studio 2012 构建一次并部署到多个环境

c# - MSDeploy - 允许参数在 parameters.xml 中是可选的/为空的

visual-studio-2010 - 如何防止 MSDeploy 删除项目中的额外文件夹?

visual-studio - 如何将属性表恢复为其默认值?

MSBuild - 解决方案的特定于项目的目标不起作用

visual-studio - 为 COM 互操作注册 x64 程序集

unit-testing - TFS 2015 在同一台机器上运行 vNext 构建和测试

tfs - 无法将队列添加到现有 TFS 2015 构建代理池