这适用于Web部署3.6,在Windows Server 2012 R2上配置并运行正确配置的远程管理服务,在使用Windows 10的开发人员PC上配置Visual Studio 2015,并从IDE中调用Web Deploy进行部署。 (更新:看来http是问题,Web部署只能用于http。)
这与有关Web部署失败的其他问题略有不同,因为错误只发生在实际部署期间而不是“验证连接”期间。
尝试了posted两个类似问题的所有解决方案other。有一个注册表黑客(UAC问题)和其他一些东西。有要检查的本地文件系统权限。
在Windows Server 2012 R2上,使用Web Deploy 3.6,IIS必须有一些新的技巧才能让这种“精彩”技术同意工作。
2016年,Web部署与以往一样令人愤怒。
答案 0 :(得分:1)
Web Deploy 3.6和之前的版本似乎有数百个主要的皱纹,很多都归结为基本上需要https
这样的未记录的需求,以及像msdeploy
这样的各种位具有可怕的复杂命令行语法
我在Visual Studio中尝试过Web Deploy,它在Azure上的生产系统上工作,但在我的内部开发系统中失败了。
它似乎可以在Visual Studio IDE内部使用有效签名证书的系统上使用,如果要部署到开发人员IIS框,请确保系统正在侦听https。如果使用自签名证书,则可能需要使用此变通方法,以便从CI系统或开发人员命令行进行部署:
将https绑定添加到开发或部署服务器的站点绑定中。
只使用webdeploy推送https,使用http时往往会失败。
如果您没有有效的可信证书(例如自签名证书),则可以在下面的命令中添加-allowUntrusted。
找到在Visual Studio IDE的输出面板中打印的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 vm试用版和Windows Server 2012 r2进行了测试,在我看来,Web部署3.6刚刚破解,并且它的任何部分都没有比向导/可视化发布部分更糟糕视觉工作室。