ws2012r2 主机上的 Web Deploy 3.6,从 VS 2015 部署失败并出现 401 错误

Web Deploy 3.6 on ws2012r2 host, deploy from VS 2015 fails with 401 error

这是 Web Deploy 3.6,正确配置了远程管理服务,运行 在 Windows Server 2012 R2 机器上,Visual Studio 2015 在开发者 PC 上使用 Windows 10,并从 IDE 中调用的 Web Deploy 进行部署。 (更新:似乎是 http 问题,Web 部署不适用于 http。)

这与其他有关 Web 部署失败并出现 401 错误的问题略有不同,因为该错误只发生在实际部署期间,而不是 "validate connection"。

所有解决方案 posted for the other 两个类似的问题都试过了。存在注册表黑客攻击(UAC 问题)和其他一些问题。有本地文件系统权限需要检查。

Windows Server 2012 R2 上的 IIS 必须有一些新的技巧,使用 Web Deploy 3.6,才能让这个 "wonderful" 技术同意工作。

现在是 2016 年,Web Deploy 一如既往地令人气愤。

Web Deploy 3.6 和之前的版本似乎有数百个主要问题,许多归结为基本需要 https 等未记录的要求,以及 msdeploy 等各种命令具有极其复杂的命令行语法。

我在 Visual Studio 内部尝试了 Web Deploy,它在 Azure 上的生产系统上运行,但在我的内部开发系统上失败了。

它似乎可以在具有来自 visual studio IDE 内部的有效签名证书的系统上使用,如果您想部署到开发人员 IIS 框,请确保系统正在侦听 https。如果您使用自签名证书,则可能需要使用此解决方法,它允许您从 CI 系统或开发人员命令行进行部署:

  1. 将 https 绑定添加到您的开发或部署服务器站点的绑定。

  2. webdeploy只能通过https推送,使用http容易失败

  3. 如果您没有有效的可信证书(例如自签名证书),您可以在下面的命令中添加 -allowUntrusted。

  4. 找到Visual StudioIDE的输出面板中打印的msdeploy命令语法,它会是这样的,然后修改它。

请不要以纯文本形式存储凭据。我在 CI 系统中使用批处理文件,我的机密存储在 CI 系统中,并使用 %ENVIRONMENT_VARIABLE% 语法注入批处理文件。

-

  "C:\Program Files (x86)\IIS\Microsoft Web Deploy V3\msdeploy.exe" 
  -source:manifest='C:\Users\...\SourceManifest.xml' 
  -dest:manifest='C:\Users\...\DestinationManifest.xml',
  ComputerName='https://192.168.215.141:8172/msdeploy.axd
  ?site=something',UserName='something',
  Password='something',IncludeAcls='False',AuthType='Basic' 
  -verb:sync -enablerule:AppOffline -enableRule:DoNotDeleteRule 
  -retryAttempts:20 -allowUntrusted

从命令行(或你自己的批处理文件),类似上面的东西对我有用,即使它在 visual studio IDE 中仍然失败。如果有办法让 Web Deploy 在 Visual Studio IDE.

中实际运行,问题仍然悬而未决

我现在已经使用试用版 Windows Server 2016 虚拟机和 Windows 服务器 2012 r2 对此进行了测试,我认为 web deploy 3.6 刚刚损坏,没有显示任何部分比 wizard/visual 发布部分 visual studio.

更糟糕