我想使用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