Web部署任务失败。错误ERROR_USER_UNAUTHORIZED
我们正在使用Tfs Build Automation和msdeploy在远程计算机上发布Web应用程序。
在“Visual Studio Build”步骤中,我们在“MSBuild Arguments”上设置此参数: / P:DeployOnBuild = TRUE; PublishProfile =我的资料; AllowUntrustedCertificate = TRUE;用户名= $(用户名);密码= $(密码)
在编译之后我们得到了这个错误:
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上的部署,而不是我在构建变量中设置的用户/传递。
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中添加了更多信息,如下面的构建日志中所示,密码为空(而不是********)!
WebDeploy版本:3.6 TFS版本:2015.1 目标计算机(MySERVER):Windows 2012 R2 IIS版本:8.5 “tfsadmin”用户具有目标IIS站点上的目标服务器(MyServer)和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'. ...
有人能帮助我吗?
答案 0 :(得分:0)
您说错了用户名和密码最终用于验证请求。运行命令net helpmsg 1326
(1326是您提供的日志条目中的sc-win32-status
值)会产生&#34; 用户名或密码不正确。&#34; < / p>
同样有趣的是之前记录的请求/响应。 401的子状态值2表示&#34; Access由于服务器配置有利于备用身份验证方法而被拒绝。&#34;根据{{3}}。而net helpmsg 1322
会产生&#34; 不允许此操作,因为它可能导致管理帐户被禁用,删除或无法登录。&#34;
答案 1 :(得分:0)
使用命令行从VS部署将使用您提供的用户名和密码。但是,从TFS部署将使用构建代理。因此,第一件事是构建过程的服务帐户应该具有访问远程服务器的正确权限。
尝试将构建服务帐户 local administrator
权限和 IIS Manager Permissionson
提供给远程服务器上的网站范围(“MySERVER”) 。然后将username参数设置为""
(空引号),并省略密码字段。
参考:Build only works with username and password in msbuild arguments
由于许多不同的原因,此错误代码可能会浮出水面。 它通常表示身份验证或授权问题,以及 可能因为以下任何原因而发生:
如果使用Web管理服务进行连接:
- 验证用户名和密码是否正确
- 验证网站是否存在
- 验证用户是否具有该站点范围的IIS管理员权限
如果使用Remote Agent Service进行连接:
- 验证用户名和密码是否正确
- 确认您指定的用户帐户是远程计算机上Administrators组的成员。注意:因为一个bug 在Web Deploy 2.0中,用户必须是内置管理员 或Domain Administrators安全组的成员。试图来 与任何其他用户帐户同步,即使是管理员,
会看到此错误代码。验证网站是否存在
<强>更新强>
默认情况下,Web Deploy将使用HTTP基本身份验证进行连接。 使用HTTP基本身份验证时,必须提供特定凭据, e.g。
msdeploy.exe -verb:dump -source:apphostconfig,wmsvc=demo-host,authType:basic,username=someuser,password=somepassword
在您的方案中,您可以尝试将AuthType
设置为NTLM
,然后再次尝试。
只需尝试将行<AuthType>NTLM</AuthType>
添加到发布.pubxml
文件即可。
答案 2 :(得分:0)
尝试一下:
tfsadmin
用户这似乎不必要,但对我有用。我希望有人可以解释“为什么”。