我有一个Web应用程序,我正在尝试使用MSDeploy.exe(Web Deploy 2)在Web服务器上部署它
我尝试过4种情景:
通过VS2010 Publish方法进行以下设置:
发布方法:Web部署
服务网址:https://MyServerName:8172/MsDeploy.axd
网站/应用程序:MyWebSiteName
允许不受信任:选中
用户名:MyUsername
密码:MyPassword
这种方法效果很好。
在MyServerName机器上运行Web管理服务;我有一个网站MyWebSiteName,一个应用程序MyWebAppName和MyUserName是它的IIS管理器。
通过VS2010 Publish方法进行以下设置:
发布方法:Web部署
服务网址:https://MyServerName:8172/MsDeploy.axd
站点/应用程序:MyWebSiteName / MyWebAppName
允许不受信任:选中
用户名:MyUsername
密码:MyPassword
这种方法效果很好。
通过MSDeploy.exe命令行(在Powershell脚本中)
$ Source =“contentPath ='...._ PublishedWebsites \ MyWebApp'”
$ Destination =“contentPath = MyWebSiteName,computerName ='https:// fc-wapps-trial:8172 / MsDeploy.axd?Site = WebSiteTest',Username = MyUsername,Password = MyPassword,AuthType = basic”
MSDeploy -verb:sync -source:$ Source -dest:$ Destination -allowUntrusted
这种方法也可以。
通过MSDeploy.exe命令行(在Powershell脚本中)
$ Source =“contentPath ='...._ PublishedWebsites \ MyWebApp'”
$ Destination =“iisApp = MyWebSiteName / MyWebAppName,computerName ='https:// fc-wapps-trial:8172 / MsDeploy.axd?Site = WebSiteTest / MyWebAppName',Username = MyUsername,Password = MyPassword,AuthType =基本”
MSDeploy -verb:sync -source:$ Source -dest:$ Destination -allowUntrusted
这种方法不起作用。我收到以下错误。
错误代码:ERROR_USER_UNAUTHORIZED
更多信息:使用Web管理服务连接到目标计算机(“MyServerName”),但无法进行授权。确保您使用的是正确的用户名和密码,您所连接的站点是否存在,以及凭据是否代表具有访问该站点权限的用户。
错误:远程服务器返回错误:(401)未经授权。
我正在查看方法2使用的实际MSDeploy命令是什么,我得到的结果如下:
msdeploy.exe
-source:清单= '... \ MyWebApp.SourceManifest.xml'
-dest:汽车,计算机名= 'https://开头MyServerName:8172 / MsDeploy.axd网站= WebSiteTest',用户名= 'MyUserName输入',密码= 'MyPassword输入',IncludeAcls = '假',进行AuthType =”基本”
-verb:同步
-disableLink:AppPoolExtension
-disableLink:ContentExtension
-disableLink:CertificateExtension
-skip:对象名= 'dirPath',absolutepath = '... \ $的App_Data'
-setParam:一种= 'ProviderPath',范围= 'IisApp',匹配= '^ ... \ PackageTmp $',值= WebSiteTest / WebAppTest
-setParam:一种= 'ProviderPath',范围= 'SETACL',匹配= '^ .. \ PackageTmp $',值= WebSiteTest / WebAppTest
-allowUntrusted
-retryAttempts = 2
现在这似乎与我在方法4中使用的内容没有任何关系。我尝试自己运行它没有成功,但我认为我无法正确地重新创建所有这些参数。
所以我的问题是:
- 我在方法4中做错了什么?
- 如何使用MSDeploy.exe命令将Web应用程序部署为IIS7中的网站应用程序
提前感谢您的帮助
尤利安
答案 0 :(得分:7)
我遇到了和你一样的问题。我只用了网站名称来解决它 https://computername:8172/msdeploy.axd?site= {websitenameonly}。然后使用-setParam IIS Web Application Name = {your web application name here}在参数中设置webapplication路径,或使用参数文件。一切都很好。
似乎只需要站点查询字符串值来授权请求。我没有找到任何可能解决此问题的任何其他查询字符串参数的MS的权威文档。但我实际测试了2个案例。 1)在IIS 7.5中部署到网站,此参数是必需的。 2)部署到网站下的Web应用程序,此参数实际上是可选的,但如果要包含它,则必须是根网站。
你实际上在这里回答了你自己的问题,但可能没有意识到这一点。
答案 1 :(得分:0)
请检查您的管理服务代表团(如果您还没有)。单击IIS管理器中的主站点以显示中心面板中的所有Web Deploy选项。在底部(过去的ASP.NET,IIS等),在管理下,您应该看到几个选项,包括“管理服务委派”。
在此配置下,您可能遇到的所有提供商上下文以及您可能使用它们的路径/类型(以及在哪些用户名等下......可以非常精细)。
确保您尝试在(iisApp,contentPath等)下进行通信的提供程序类型不仅列出,而且具有您需要的路径/范围,并且您在已清除的权限下运行。
请记住:如果正确设置了委派,则不必使用管理员类型的用户。并且您已转到适用站点的IIS管理器权限并添加了允许的用户,如Domain \ User,甚至是自定义IIS管理器用户。