使用MSDeploy命令部署Web应用程序的问题

5
我有一个Web应用程序,正在尝试使用MSDeploy.exe(Web Deploy 2)将其部署到Web服务器上。
我尝试了4种方案:
1.通过VS2010发布方法,使用以下设置: 发布方法:Web Deploy 服务URL:https://MyServerName:8172/MsDeploy.axd 站点/应用程序:MyWebSiteName 允许不受信任的操作:已选中 用户名:MyUsername 密码:MyPassword 此方法可以正常工作。 在MyServerName机器上,我运行了Web Management Service;我有一个名为MyWebSiteName的网站,一个名为MyWebAppName的应用程序,MyUserName是它的IIS Manager。
2.通过VS2010发布方法,使用以下设置: 发布方法:Web Deploy 服务URL:https://MyServerName:8172/MsDeploy.axd 站点/应用程序:MyWebSiteName/MyWebAppName 允许不受信任的操作:已选中 用户名:MyUsername 密码:MyPassword 此方法可以正常工作。
3.通过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 此方法也可以正常工作。
4.通过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=basic" MSDeploy -verb:sync -source:$Source -dest:$Destination -allowUntrusted 此方法不起作用。我得到以下错误。 错误代码:ERROR_USER_UNAUTHORIZED 更多信息:使用Web Management Service连接到目标计算机(“MyServerName”),但无法授权。确保您使用正确的用户名和密码,正在连接的站点存在,并且凭据代表具有访问该站点权限的用户。 错误:远程服务器返回错误:(401)未经授权。
我正在查看第二种方法使用的实际MSDeploy命令,结果如下:
msdeploy.exe
-source:manifest='...\MyWebApp.SourceManifest.xml'
-dest:auto,ComputerName='https://MyServerName:8172/MsDeploy.axd?site=WebSiteTest',UserName='MyUsername',Password='MyPassword',IncludeAcls='False',AuthType='Basic'
-verb:sync
-disableLink:AppPoolExtension
-disableLink:ContentExtension
-disableLink:CertificateExtension
-skip:objectname='dirPath',absolutepath='...\App_Data$'
-setParam:kind='ProviderPath',scope='IisApp',match='^...\PackageTmp$',value=WebSiteTest/WebAppTest
-setParam:kind='ProviderPath',scope='setAcl',match='^..\PackageTmp$',value=WebSiteTest/WebAppTest
-allowUntrusted
-retryAttempts=2
然而,这似乎与我在第四种方法中使用的内容相差甚远。我尝试了自己运行它,但没有成功,我认为我无法正确地重新创建所有这些参数。
因此,我的问题是:
- 在第4种方法中我做错了什么?
- 如何使用MSDeploy.exe命令将Web应用程序部署为IIS7中的网站应用程序?
感谢您的帮助。
Iulian

你是如何完成“...查看方法2使用的实际MSDeploy命令”的? - Kenny Evitt
我认为你可以在这里找到答案:http://sedodream.com/2010/11/04/WebDeployHowToSeeTheCommandExecutedInVisualStudioDuringPublish.aspx。他说微软在发布时默认使用 MSDeploy 对象模型,但你可以更改它。 - Iulian Ilies
2个回答

7

我遇到了和你一样的问题。我通过只在https://computername:8172/msdeploy.axd?site={websitenameonly}中使用站点名称来解决它。然后使用-setParam IIS Web应用程序名称={your web application name here}参数设置您的Web应用程序路径,或使用参数文件。然后一切都可以成功部署。

似乎站点查询字符串值仅需要授权请求。我没有找到来自MS的任何明确文档,介绍可能解决此问题的其他查询字符串参数。但是我实际上测试了2种情况。1)部署到IIS 7.5中的网站,则需要此参数。2)在网站下的Web应用程序中部署时,该参数实际上是可选的,但是如果您想要包含它,则必须是根站点。

实际上,您已经在这里回答了自己的问题,只是可能没有意识到。


非常抱歉这么晚才将其标记为有效答案! - Iulian Ilies

0
请检查您的管理服务委派(如果您还没有这样做)。在 IIS 管理器中单击主站点,以在中心面板中显示所有 Web Deploy 选项。在底部(ASP.NET、IIS 等之后),在“管理”下,您应该会看到几个选项,包括“管理服务委派”。
在此配置下,您可能会遇到所有提供程序上下文和您可能使用它们的路径/类型(以及使用什么用户名等等...可以变得非常细致)。
非常确保您尝试通信的提供程序类型(iisApp、contentPath 等)不仅已列出,而且具有所需的路径/范围,并且您正在操作已被清除的权限下。
记住:如果正确设置了委派,则无需使用管理员类型的用户。并且您已经转到适用站点的 IIS 管理器权限并添加了允许的用户,例如域\用户,甚至是自定义的 IIS 管理器用户。

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