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

时间:2012-02-24 06:44:53

标签: msdeploy

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

我尝试过4种情景:

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

  2. 通过VS2010 Publish方法进行以下设置:
    发布方法:Web部署
    服务网址: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 =基本”
    MSDeploy -verb:sync -source:$ Source -dest:$ Destination -allowUntrusted
    这种方法不起作用。我收到以下错误。
    错误代码:ERROR_USER_UNAUTHORIZED
    更多信息:使用Web管理服务连接到目标计算机(“MyServerName”),但无法进行授权。确保您使用的是正确的用户名和密码,您所连接的站点是否存在,以及凭据是否代表具有访问该站点权限的用户。
    错误:远程服务器返回错误:(401)未经授权。

  5. 我正在查看方法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中的网站应用程序


    提前感谢您的帮助
    尤利安

2 个答案:

答案 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管理器用户。