Msdeploy:allowuntrusted 被忽略了。

3
我有一台运行着IIS Web应用程序的Win2008 R2全新安装的机器[A]。我尝试在机器[B]上使用msdeploy命令行工具将部署包发布到这台机器,但是我一直遇到证书相关的错误。 我正在使用-allowuntrusted,但它仍然不断给出同样的错误。
我已经尝试了不同的方法(如更改IIS上的msdeploy端口,将证书安装在其他机器上,重新安装IIS角色等等),但是两天过去了,完全没有运气。
这是我的操作步骤:
msdeploy.exe -verb:sync -source:package="Web.zip" -dest:auto,ComputerName="https://machineA:8173/msdeploy.axd?site=app.com",UserName="AdminUser",Password="SecurePassword",AuthType="Basic" -allowUntrusted

为了让事情更有趣,当我在包含IIS的机器上运行相同的命令时(即使将dest更改为sync),我得到了以下结果:
Error: A '-dest' argument must be specified with the 'sync' verb.
Error count: 1.

有什么想法吗?

编辑: 我尝试在Visual Studio 2012中使用相同的设置(ip、package、authentication)创建发布配置文件,可以成功部署。点击“Verify connection”后,会弹出一个窗口询问是否接受这个不受信任的证书。我选择了“是”,然后继续发布——这一步非常顺利。

有没有办法在msdeploy命令行中实现这个行为?对我来说,使用VS2012不是一个选项,因为发布必须自动完成。

编辑2: 乐趣继续:它在另一台Windows Server 2008 R2目标机器上运行正常(不是干净安装)。那么,魔术复选框在哪里呢? :)

2个回答

6

因此,我找到了两个解决方案:

  1. 获得有效的证书(我们公司有一个有效证书,因此在机器[B]上玩弄主机以匹配公司域名的IP地址有所帮助)。

  2. 将“-allowUntrusted:true”放在“-dest”之前,而不是在末尾。不知道为什么它在一台机器上可以工作,在另一台机器上却不行。

希望这能帮助某些人节省时间 :)


2
-allowUntrusted 可以放在任何位置。如果它在“-dest”之前起作用,那么这意味着您可能存在一些问题,比如双引号或连字符本身会使 msdeploy.exe 无法看到传递给它的 allowuntrusted。例如从 Word 文档或 Outlook 电子邮件中复制的连字符。 - Shaikh Owais

1
我看到该命令存在一些问题:
除非您已更改默认端口,否则应使用8172而不是8173。
其次,在securepassword之前有一个双引号,但我没有看到闭合的双引号。
您的程序包很可能具有某些默认参数,在部署过程中必须指定值。
msdeploy.exe -verb:sync -source:package="Web.zip" -dest:auto,ComputerName=https://machineA:8172/msdeploy.axd?site=app.com,UserName="AdminUser",Password="SecurePassword",AuthType="Basic" -allowUntrusted -setParam:paramname=value

我改变了端口来尝试使事情工作。既然我收到证书而不是“目标不可达”错误,我认为连接通过得很好。甚至通过注册表查看端口更改在所有地方都应用了。双引号:对不起,我的错误。在原始问题中进行了修正,引号也出现在实际查询中(刚刚检查了脚本)。 至于其他参数,我在构建部署包时已经指定了它们(使用msbuild和一堆参数),因此我在这里不添加任何其他内容。像我说的,这个命令在另一台机器上可以运行。 - Elena

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接