【问题标题】:How do I deploy using MSDeploy in Team Build 2010 using the WMSVC service and NTLM authentication?如何使用 WMSVC 服务和 NTLM 身份验证在 Team Build 2010 中使用 MSDeploy 进行部署?
【发布时间】:2011-11-30 04:12:33
【问题描述】:

我正在尝试使用 Team Build 2010 部署到 Windows Server 2008 R2 Web 服务器。我的构建服务器代理设置为在 Windows 域帐户下运行。我已使用 IIS 管理器权限在我的 Web 服务器上成功授予此域帐户权限以进行部署。此帐户不是网络服务器上的管理员。我可以使用以下参数很好地部署构建:

/p:DeployOnBuild=True 
/p:DeployTarget=MsDeployPublish 
/p:CreatePackageOnPublish=False 
/p:MSDeployPublishMethod=WMSVC 
/p:AllowUntrustedCertificate=True 
/p:MSDeployServiceUrl=webservername
/p:DeployIisAppPath="Web Site Name"
/p:UserName=DOMAIN\BUILDID
/p:Password=buildidpassword

因为其他开发人员将要设置他们的构建,我宁愿不公布域帐户的密码,我需要使用 NTLM 身份验证来部署。我想继续使用 Web 管理服务方法 (WMSVC) 进行部署,因此 BUILDID 不必是管理员。

我已经深入研究了“Microsoft.Web.Publishing.targets”,看来我应该能够传递一个 AuthType 参数来控制授权类型,但它似乎没有任何效果。我试过了:

/p:DeployOnBuild=True 
/p:DeployTarget=MsDeployPublish 
/p:CreatePackageOnPublish=False 
/p:MSDeployPublishMethod=WMSVC 
/p:AllowUntrustedCertificate=True 
/p:MSDeployServiceUrl=webservername
/p:DeployIisAppPath="Web Site Name"
/p:AuthType=NTLM

我还尝试输入一个空白用户名(如在 StackOverflow 的其他地方看到的),但无济于事。我继续收到错误:

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets(3847,5):错误:Web 部署任务失败。(使用 Web 管理服务连接到目标计算机(“webservername”),但无法授权。请确保您使用的用户名和密码正确,即您要连接的站点存在,并且凭据代表有权访问该站点的用户。)

我也尝试了上一个链接中提到的UseMsdeployexe 参数,但是我得到了与 web.config 转换相关的其他错误。它看起来像the issue is already on Microsoft Connect,并在下一期中列为已修复。

【问题讨论】:

  • 嘿@Michael McGuire - 你有没有解决这个问题?我现在和你在同一条船上! :-( 尝试使用 Atlassian Bamboo 使用 msdeploy 发布到 Windows Server 2008 R2 上的 IIS 7,似乎无法使用 NTLM 使其工作。两台机器都在域上。
  • 我会查看目标计算机上的事件日志,尤其是安全日志。我也会从命令行尝试 MSDEPLOY 命令,首先在您自己的工作站上,然后,如果可能的话,从构建机器上尝试。
  • 对不起,我还没有让这个工作。目前,我在构建中拥有构建 ID 的密码。
  • 似乎没有人想解决这个问题......这真是太糟糕了。即使有适度的赏金,它也收到了 6 个新的 Ups 并且没有答案。
  • 您可以使用 Wireshark 或 Fiddler 之类的工具来验证您的请求是否正常?我们不使用 Team Build,但在我们的构建服务器上,它使用 MSDeploy(通过我们自己在 .NET 中的自定义代码)部署到我们的 Web 服务器。

标签: tfs msbuild msdeploy tfsbuild


【解决方案1】:

如果使用 NTLM 失败,则需要授予团队构建服务代理对您站点的权限,以允许非管理员连接到站点或应用程序部署服务器访问。您可以在Management Service 下进行配置。

您可能还想看看如何配置 Web 部署提供程序设置。 Web Deploy Provider Settings

如果指定了 wmsvc 提供程序设置,则默认身份验证类型为 Basic;否则,默认身份验证类型为 NTLM。

如果您想使用基本身份验证类型,您还可以使用 encryptPassword 参数加密您的密码并在托管服务器上配置设置。

希望这会有所帮助。

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

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

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

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

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

【讨论】:

    【解决方案2】:

    还有一个额外的步骤,我从来没有接受过:

    Source

    您可以选择让用户通过 Web 进行身份验证 使用 NTLM 的管理服务。为此,请更新注册表 服务器通过添加一个名为“WindowsAuthenticationEnabled”的 DWORD 键 在 HKEY_LOCAL_MACHINE\Software\Microsoft\WebManagement\Server 下,以及 将其设置为 1。如果 Web 管理服务已启动,则 服务重启后设置生效。

    【讨论】:

    • 在我的 .pubxml 文件和 msbuild 参数中使用不同的设置苦苦挣扎了好久,但添加此 reg 密钥立即修复了它。 (TFS2012 通过 WMSVC 发布到 Win2008R2,无需管理员帐户)
    猜你喜欢
    • 2011-08-12
    • 2018-04-29
    • 2021-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-26
    相关资源
    最近更新 更多