【问题标题】:Deployment issue of an web application using MSDeploy command使用 MSDeploy 命令部署 Web 应用程序的问题
【发布时间】:2012-03-14 15:43:53
【问题描述】:

我有一个 Web 应用程序,我正在尝试使用 MSDeploy.exe(Web 部署 2)将它部署到 Web 服务器上

我尝试了 4 种情况:

  1. 通过具有以下设置的 VS2010 Publish 方法:
    发布方式:网络部署
    服务网址:https://MyServerName:8172/MsDeploy.axd
    站点/应用程序:MyWebSiteName
    允许不受信任:选中
    用户名:我的用户名
    密码:我的密码
    此方法效果很好。
    在 MyServerName 机器上,我正在运行 Web 管理服务;我有一个网站 MyWebSiteName、一个应用程序 MyWebAppName 和 MyUserName 是它的 IIS 管理器。

  2. 通过具有以下设置的 VS2010 Publish 方法:
    发布方式:网络部署
    服务网址:https://MyServerName:8172/MsDeploy.axd
    站点/应用程序:MyWebSiteName/MyWebAppName
    允许不受信任:选中
    用户名:我的用户名
    密码:我的密码
    这个方法很好用。

  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 管理服务连接到目标计算机(“MyServerName”),但无法授权。确保您使用正确的用户名和密码,您要连接的站点存在,并且凭据代表有权访问该站点的用户。
    错误:远程服务器返回错误:(401) Unauthorized.

我正在查看方法 2 使用的实际 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 '
-动词:同步
-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 中使用的没有什么相似之处。我尝试自己运行它但没有成功,但我认为我无法正确地重新创建所有这些参数。

所以我的问题是:
- 我在方法 4 中做错了什么?
- 如何使用 MSDeploy.exe 命令在 IIS7 中将 Web 应用程序部署为网站应用程序


提前感谢您的帮助
尤利安

【问题讨论】:

  • 您是如何完成“...查看方法 2 使用的实际 MSDeploy 命令是什么”?
  • 我想你可以找到答案here。好吧,他说 MS 在发布时默认使用 MSDeploy 对象模型,但您可以更改它。

标签: msdeploy


【解决方案1】:

请检查您的管理服务委托(如果您还没有)。单击 IIS 管理器中的主站点以在中心面板中显示所有 Web 部署选项。在底部(过去的 ASP.NET、IIS 等)的管理下,您应该会看到几个选项,包括“管理服务委托”。

在此配置下是您可能遇到的所有 Provider 上下文以及您可能使用它们的路径/类型(以及在哪些用户名下,等等...可以变得非常细化)。

确保您尝试通信的提供程序类型(iisApp、contentPath 等)不仅已列出,而且具有您需要的路径/范围,并且您在已清除的权限下操作。

请记住:如果委派设置正确,您不必使用管理员类型的用户。并且您已转到适用站点的 IIS 管理器权限并添加了允许的用户,例如域\用户,甚至是自定义 IIS 管理器用户。

【讨论】:

    【解决方案2】:

    我遇到了和你一样的问题。我只使用站点名称解决了它 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站点下的web应用,这个参数其实是可选的,但是如果要包含它,那么它必须是根站点。

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

    【讨论】:

    • 我很抱歉将它标记为一个有效的答案,如此延迟!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-13
    • 1970-01-01
    • 1970-01-01
    • 2011-06-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多