使用 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 服务对话的命令。
不知道为什么,这没有任何意义,但使用相同的命令并在另一个机器上执行它似乎工作正常,即使部署到我遇到问题的同一个机器上也是如此。
干得好微软...让团队服务管理员的生活成为梦想的方法!
我构建了我的包并通读了这个文档@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 服务对话的命令。
不知道为什么,这没有任何意义,但使用相同的命令并在另一个机器上执行它似乎工作正常,即使部署到我遇到问题的同一个机器上也是如此。
干得好微软...让团队服务管理员的生活成为梦想的方法!