Msbuild msdeploy错误\u用户\u未经授权:Web部署任务失败

Msbuild msdeploy错误\u用户\u未经授权:Web部署任务失败,msbuild,tfs-2015,msdeploy,microsoft-web-deploy,Msbuild,Tfs 2015,Msdeploy,Microsoft Web Deploy,Web部署任务失败。错误用户未经授权 我们正在使用Tfs Build Automation和msdeploy在远程计算机上发布web应用程序 在“Visual Studio生成”步骤中,我们在“MSBuild参数”上设置了以下参数: /p:DeployOnBuild=true;PublishProfile=myProfile;AllowUntrustedCertificate=true;用户名=$(用户名);密码=$(密码) 完成构建后,我们会出现以下错误: C:\Program Files(x

Web部署任务失败。错误用户未经授权

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

在“Visual Studio生成”步骤中,我们在“MSBuild参数”上设置了以下参数: /p:DeployOnBuild=true;PublishProfile=myProfile;AllowUntrustedCertificate=true;用户名=$(用户名);密码=$(密码)

完成构建后,我们会出现以下错误:

C:\Program Files(x86)\MSBuild\Microsoft\VisualStudio\v14.0\Web\Microsoft.Web.Publishing.targets(4276,5):错误\u用户\u未经授权:Web部署任务失败。(已使用Web管理服务连接到远程计算机(“MySERVER”),但无法进行授权。请确保您使用的用户名和密码正确,连接到的网站存在,并且凭据代表有权访问该网站的用户。有关详细信息,请访问:

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

我检查了IIS上的管理服务日志,发现了一些重要信息: 为在IIS上部署而发送的生成代理的用户名(tfsadmin),而不是我在生成变量中设置的用户/密码

字段:日期时间s-ip cs方法cs uri stem cs uri查询s-port cs用户名c-ip cs(用户代理)cs(参考)sc状态sc子状态sc-win32状态所用时间 2018-01-03 09:29:02 MYSERVERIP HEAD/msdeploy.axd site=MySiteName 8172-MyBuildServerIP--4012 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管理器权限

生成日志:


有人能帮我吗?

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

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

  • 在以下位置查看(或重新查看)说明:
  • 如果您的部署仍然不起作用,请查看
    使用命令行从VS部署将使用您提供的用户名和密码。但是,从TFS部署将使用生成代理。因此,首先,构建过程的服务帐户应该具有访问远程服务器的正确权限

    只需尝试将构建服务帐户
    本地管理员
    权限和
    IIS管理器权限授予远程服务器(“MySERVER”)上站点的作用域。然后将username参数设置为
    (空引号),并省略密码字段

    参考:

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

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

    • 验证用户名和密码是否正确
    • 验证站点是否存在
    • 验证用户是否具有对站点作用域的IIS管理器权限
    如果使用远程代理服务进行连接:

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


    更新:

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

    在您的场景中,您可以尝试将
    AuthType
    设置为
    NTLM
    ,然后重试

    只需尝试将行
    NTLM
    添加到publish
    .pubxml
    文件中

    试试这个:

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

    这似乎不必要,但对我来说很有效。我希望有人能解释“为什么”

    谢谢weir,我知道错误是怎么说的,但我的问题是为什么它使用build agent服务的用户名/密码而不是我在build Variable上设置的用户名/密码。您可以使用您在开发计算机的命令行中设置的MSBuild参数成功部署web应用程序吗?是的,我可以从dev machineThanks中的MSBuild部署,服务帐户(tfsadmin)在远程计算机(MyServer)上具有本地管理员权限,在目标站点上具有IIS管理权限。我将Username参数设置为“”,问题存在,但出现新错误:Web部署任务失败。(指定的凭据不能与t一起使用。)
    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'.
    ...
    
    msdeploy.exe -verb:dump -source:apphostconfig,wmsvc=demo-host,authType:basic,username=someuser,password=somepassword