繁体   English   中英

msdeploy 错误 ERROR_USER_UNAUTHORIZED:Web 部署任务失败

[英]msdeploy error ERROR_USER_UNAUTHORIZED: Web deployment task failed

Web 部署任务失败。 错误 ERROR_USER_UNAUTHORIZED

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

在“Visual Studio Build”步骤中,我们在“MSBuild Arguments”上设置此参数:/p:DeployOnBuild=true;PublishProfile=myProfile;AllowUntrustedCertificate=true;UserName=$(UserName);Password=$(Password)

在 quing 构建后,我们收到此错误:

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 中密码为空(而不是 ********)!

WebDeploy 版本: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://docs.microsoft.com/en-us/iis/publish/using-web-deploy/configure-the-web-deployment-handler上的说明
  2. 如果您的部署仍然无法正常工作,请查看Microsoft 的Web 部署常见问题疑难解答

使用命令行从 VS 部署将使用您提供的用户名和密码。 但是,从 TFS 部署将使用构建代理。 因此,第一件事是构建过程的服务帐户应该具有访问远程服务器的正确权限。

只需尝试为远程服务器(“MySERVER”)上的站点范围授予构建服务帐户local administrator权限和IIS Manager Permissionson 然后将用户名参数设置为"" (空引号)并省略密码字段。

参考: 构建仅适用于 msbuild 参数中的用户名和密码

由于许多不同的原因,此错误代码可能会出现。 它通常表示身份验证或授权问题,并且可能由于以下任何原因而发生:

如果使用 Web 管理服务进行连接:

  • 验证用户名和密码是否正确
  • 验证站点是否存在
  • 验证用户是否具有站点范围的 IIS 管理器权限

如果使用远程代理服务连接:

  • 验证用户名和密码是否正确
  • 验证您指定的用户帐户是否是远程计算机上管理员组的成员。 注意:由于一个错误
    在 Web Deploy 2.0 中,用户必须是内置管理员或 Domain Administrators 安全组的成员。 尝试去
    与任何其他用户帐户同步,即使它是管理员,
    会看到这个错误代码。 验证站点是否存在

参考: ERROR_USER_UNAUTHORIZED


更新:

默认情况下,Web 部署将使用 HTTP 基本身份验证进行连接。 使用 HTTP 基本身份验证时,必须提供特定的凭据,例如

msdeploy.exe -verb:dump -source:apphostconfig,wmsvc=demo-host,authType:basic,username=someuser,password=somepassword

在您的场景中,您可以尝试将AuthType设置为NTLM ,然后再试一次。

只需尝试将<AuthType>NTLM</AuthType>行添加到发布的.pubxml文件中。

尝试这个:

  • 在您的服务器上转到计算机管理
  • 从左侧面板中选择本地用户和组
  • 转到 users 找到tfsadmin用户
  • 右键单击它,然后单击设置密码
  • 提供您现有的密码(无论它是什么)

这似乎没有必要,但对我有用。 我希望有人可以解释“为什么”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM