使用 MSDEPLOY 部署 Web 包

Deploying web packages with MSDEPLOY

我构建了我的包并通读了这个文档@http://www.asp.net/web-forms/overview/deployment/web-deployment-in-the-enterprise/deploying-web-packages

而且从这里开始问题似乎应该相对简单,因为说明清楚地显示...

[project name].deploy.cmd [/T | /Y]
                          [/M:<computer name>]
                          [/A:<Basic | NTLM>]
                          [/U:<user name>]
                          [/P:<password>]
                          [/L]
                          [/G:<true | false>]
                          [Additional MSDeploy.exe flags]

..所以,没问题我想我会像这样给命令参数...

myproj.deploy.cmd /Y /M:test.foo.com /A:basic /U:<my user> /P:<my pass>

...其中用户和密码是我服务器上的管理员帐户。

出于某种原因,虽然这会导致 401 ...

Error code: EEROR_USER_NOT_ADMIN
More Information: Connected to 'server' using the Web Deployment Agent Service but could not authorize. Make sure you are an administrator on 'server'

... 好吧,我使用了我的管理员凭据,与我在 VS 中用于一键部署的凭据相同,它们在 VS 中工作,所以为什么在推送包时它们不在命令行上工作?

...

编辑:

我查看了日志,检查了它生成的 ms deploy 命令,并决定完全跳过 cmd 文件,直接自己进行 ms deploy。

我找到了它正在生成的命令并将其清理成这样...

msdeploy.exe
  -source:package='..\package.zip' 
  -dest:auto,computerName=test.foo.com,userName=<me>,password=<my pass>,authtype=basic,includeAcls=False 
  -verb:sync 
  -disableLink:AppPoolExtension 
  -disableLink:ContentExtension 
  -disableLink:CertificateExtension 

显然我的帐户在这种情况下使用时不是管理员(完全是谎言,或者我可能错过了什么)。

以下是 technet 对此的评论:https://technet.microsoft.com/en-gb/library/dd569106(v=ws.10).aspx

链接到这个:https://technet.microsoft.com/en-gb/library/dd569001(v=ws.10).aspx

其中指出...

The Web Deployment Tool does not perform local impersonation. If you provide values for the username and password provider settings but do not specify the name of a remote computer for the computerName setting, the credentials that you provide will have no effect.

这是否意味着因为我指定的是域名而不是机器名,所以我指定的凭据已被忽略?

如果是...我应该怎么做?

如果您想使用域帐户,您应该将 authType 设置为 "NTLM"。

显然没有记录...答案是...

您不能 运行 MS 部署与同一台计算机上的 MSDeploy 服务对话的命令。

不知道为什么,这没有任何意义,但使用相同的命令并在另一个机器上执行它似乎工作正常,即使部署到我遇到问题的同一个机器上也是如此。

干得好微软...让团队服务管理员的生活成为梦想的方法!