29

尝试使用不是目标服务器上的本地管理员的 Windows 用户远程部署应用程序时,我使用 NTLM 身份验证从 MsDeploy 收到未经授权的错误。我在目标框中的管理服务委派中设置了规则,并检查了所有提供者。根据此规则,我添加了 2 个具有允许权限的用户('*',以及我正在执行远程部署的 windows 用户)。此外,我已在我尝试部署的站点上授予 Windows 用户权限。如果我让 Windows 用户成为目标框上的本地管理员并设置“允许管理员绕过规则”,则部署工作正常。如果 windows 用户不是本地管理员,我会收到以下错误:

Web 部署任务失败。(无法联系远程代理 (URL http://xxxxxxxx/MSDEPLOYAGENTSERVICE )。请确保目标计算机上已安装并启动远程代理服务。)请确保站点名称、用户名和密码是正确的。如果问题仍未解决,请联系您的本地或服务器管理员。错误详细信息:无法联系远程代理 (URL http://xxxxx/MSDEPLOYAGENTSERVICE )。确保在目标计算机上安装并启动了远程代理服务。收到了不受支持的响应。响应标头“MSDeploy.Response”为“V1”,但应为“v1”。远程服务器返回错误:(401) Unauthorized。在 Microsoft.Web.Publishing.targets(3588, 5)

4

10 回答 10

53

如果您将委派配置为“允许管理员绕过规则”并且 msdeploy 命令成功,那么您正在通过 WMSvc,它正在让您通过。否则,从响应看来,WMSvc 正在拒绝您,而您正在回退到 Web Deloy 代理。

将以下 reg 值设置/添加到 WMSvc reg 键:

reg add HKLM\Software\Microsoft\WebManagement\Server /v WindowsAuthenticationEnabled /t REG_DWORD /d 1

回收 WMSvc:

net stop wmsvc & net start wmsvc

再试一次。如果不成功,您可以发布您的 msdeploy 命令行。

于 2011-01-29T00:15:36.703 回答
5

我们有一台机器,作为构建过程的一部分,我们一直在部署它。由于没有明显的原因,部署停止工作,我们无法再远程访问任何管理共享(C$、ADMIN$ 等)。我们找到了管理共享的修复程序,它也修复了部署问题。

我们按照这篇知识库文章中的步骤重新启用了管理共享(仍然不知道它们为什么突然停止工作)。

http://support.microsoft.com/kb/947232

在我们这样做之后,msdeploy 突然又开始工作了。我认为 msdeploy 根本没有使用管理共享。我什至不肯定这两者完全相关,但我想我会把它扔在那里以防它解决其他人的问题。

于 2011-07-28T21:15:40.223 回答
4

我终于能够使用 NTLM 运行我的自动构建和部署。我只是想总结一下它需要做些什么,以防它对任何人都有帮助。这是 IIS 7.5。

  1. 设置注册表设置并重新启动 Web 管理服务 (WMSVC):

    reg add HKLM\Software\Microsoft\WebManagement\Server /v WindowsAuthenticationEnabled /t REG_DWORD /d 1

  2. 授予用户在网站目录中运行 TFS 构建服务的权限。

  3. 这是我使用的 MSBuild 参数。用你的名字替换各种名字。我使用的是 DEV 和 Any CPU。我还需要允许一个不受信任的证书。

    /m /p:PublishProfile=DEV /p:Configuration=DEV /p:Platform="Any CPU" /p:DeployOnBuild=true /p:AllowUntrustedCertificate=true /p:authType=NTLM

  4. 在选择目标网站的 IIS 管理器中,打开 IIS 管理器权限并允许用户运行 TFS 构建服务。

跟踪对于诊断问题非常有帮助。您可以在 IIS 管理器的管理服务委派中打开跟踪。最初我在 IIS 管理器中看不到管理服务委派。为了展示,我必须从“添加程序”中“更改”Web 部署,以便安装管理服务委派。看起来它已经安装了,但是我重置了下拉列表以安装到我的计算机上并完成了安装。然后它出现在 IIS 管理器中。

于 2014-11-19T23:47:52.957 回答
3

不确定确切的原因,但也许可以帮助您找到自己的方式。

WebDeploy 根据远程服务器的配置使用两个入口点,即其运行的是 IIS6 还是 IIS7。

IIS 7 使用由 Web 管理服务管理的IIS 部署处理程序,并允许 msdeploy 直接配置 IIS。所有“管理服务委托”等设置都与此设置相关。

但是,IIS 6 没有 Web 管理服务,因此处理程序将无法工作。对于 IIS6 目标,使用称为 MS Deploy Agent Service的服务。

奇怪的是,您的设置表明您正在使用 IIS 7,因为您能够设置委托设置等。但是,该 url,“/MSDEPLOYAGENTSERVICE”表明您的机器正在尝试使用该服务......几乎就像它认为它的 IIS 6。该服务需要管理员访问权限,这就是您收到该错误的原因。

根据错误,您似乎是从 MSbuild 调用它,可能直接从 Visual Studio 调用。您可能想查看您提供的设置,看看是否有任何东西导致此路径和/或服务器选择。

还要确保 Web 管理服务正在远程计算机上运行。

基本上,您希望看到它对不同的 url http://<>/msdeploy.axd(如果我没记错的话)进行部署调用以正确调用处理程序。

于 2011-01-27T23:19:16.947 回答
2

这占用了我太多时间。我已经让 Web Deploy 为我的其他站点工作。我决定向我的服务器添加一个新网站,并尝试部署到它(但由于过度复制/粘贴错误,意外留下了相同的“站点/应用程序”名称)。发布成功,但是当我意识到我发布到错误的站点(而不是新站点)时,我更改了站点名称并尝试重新部署,但我一直收到此错误。我在 IIS 端尝试了一切。最后,我完全关闭了我的 Visual Studio 2010 实例。打开它备份,再次尝试发布,它工作!

如有疑问,请问自己:“您是否尝试过将其关闭并再次打开?”
我意识到这个建议不会帮助每个人解决这个模棱两可的错误——只是少数几个。

于 2011-12-27T21:56:58.837 回答
1

昨天我能够部署得很好,今天有这个完全相同的错误消息。经过一两个小时的故障排除后,我最终从我的用户名中删除了域。在它之前是 DOMAIN\username 之前,我将其更改为 [username],瞧,它又开始工作了。我知道这不是一个很好的答案,但也许它会帮助遇到它的其他人。

于 2014-10-17T15:36:14.770 回答
1

如果您的用户是管理员,但您仍然可以获得

ERROR_USER_IS_NOT_ADMIN

确保您使用的是完全限定的用户名。

MyMachineName\MyWebDeployUser

于 2012-04-27T15:33:06.650 回答
0

在我们运行 Windows Server 2003 的域控制器之一上安装了MS15-025MS15-027的补丁后,Web Deploy 昨天停止为我们工作,当时使用当前 Windows 用户的身份(它使用显式凭据) 。

我们检查了 Web 部署的所有建议,但无法解决 HTTP 401.2 错误。

现在,Microsoft 重新发布了专门针对 Windows Server 2003 的两个公告的补丁(KB3033395-v2 和 KB3002657-v2)。安装更新的补丁并启动域控制器后,它立即再次工作。我们甚至不必重新启动 Web 服务器上的任何服务。

没有指向此的事件日志条目,只是由于时间关系而变得明显。

于 2015-03-17T00:36:47.353 回答
0

我的问题是网络服务是Web 部署代理服务中的登录帐户,它的帐户没有足够的权限来更改或读取 IIS 文件...

要解决您的问题,只需执行以下步骤:

打开服务面板 (services.msc)
找到Web 部署代理服务并双击打开Web 部署代理服务属性...在登录选项卡上将“登录为”更改为管理员帐户...

于 2013-03-28T20:32:29.667 回答
0

还有另一种可能:由于使用 web deploy 进行部署的尝试失败次数过多,您的帐户已被锁定。重置您的帐户或让您的系统管理员为您执行此操作。非常令人沮丧。

于 2017-11-02T03:21:33.870 回答