我想使用dirPath提供程序将Windows应用程序部署到远程服务器上的特定路径。我能够没有问题的网站部署到这个相同的服务器,使用类似下面的语法:尝试使用dirPath类似的命令时如何在dirPath提供程序中使用“wmsvc = [server]”语法?
msdeploy.exe -verb:sync -source=iisApp=C:\SomePath -dest:authType=basic,wmsvc=MyServer,userName=MyUser,password=MyPassword,iis=MySite/MyApp -allowUntrusted
不过,我得到401未经授权错误(原因不明) :
msdeploy.exe -verb:sync -source=dirPath=C:\SomePath -dest:authType=basic,wmsvc=MyServer,userName=MyUser,password=MyPassword,dirPath=C:\SomeRemotePath -allowUntrusted
我发现在这里工作的唯一一件事就是切换到使用计算机名语法,就像这样:
msdeploy.exe -verb:sync -source=dirPath=C:\SomePath -dest:authType=basic,computerName=https://MyServer:8172/msdeploy.axd?site=MySite,userName=MyUser,password=MyPassword,dirPath=C:\SomeRemotePath -allowUntrusted
这样可以,但computerName要求网站作为查询字符串参数传递,而本例中的“MySite”实际上是“默认网站”。考虑到我实际上是用MSBuild文件生成这个命令行(并用Exec语句执行它),我无法为我的生活弄清楚如何正确地转义空间。如果我在MSBuild文件(例如Default%20Web%20Site)中指定%20,它会在执行该命令之前将其解析回空格,这会导致语法无效。如果我尝试双重转义(分别转义%,2和0,例如Default%25%32%30Web%25%32%30Site),我会回到401 Unauthorized错误。
那么,是否有一些语法或服务器配置允许我在此命令中使用“wmsvc = [server]”,因为它不需要有问题的(不可避免的?)站点查询参数?或者有人可以告诉我如何在上面执行MSDeploy命令的MSBuild Exec命令中正确地转义“?site = Default Web Site”?
编辑:之前有人建议我只是将默认网站重命名为没有空格的东西,是的,这有效,但我试图找到一种方法来避免这种情况,因为我想要一个可以工作的通用解决方案使用任何给定服务器上的IIS网站的默认名称。
难道你不能只将computerName值放在双引号中吗? 'computerName =“https://.../Default网站”' – 2014-05-27 17:54:40
松饼人!我认识你吗? – 2014-05-27 18:06:35
我不知道,你告诉我。 – 2014-05-27 19:17:30