WebDeploy(401)未经授权的错误

问题描述 投票:29回答:10

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

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

iis msbuild msdeploy webdeploy
10个回答
51
投票

如果将委派配置为“允许管理员绕过规则”并且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命令行吗?


0
投票

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

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

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


5
投票

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

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

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

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


4
投票

我终于能够使用NTLM实现自动构建和部署运行。我只是想总结一下,如果它对任何人都有帮助,它会如何实现。这是IIS 7.5。

  1. 设置注册表设置并重新启动Web管理服务(WMSVC): reg添加HKLM \ Software \ Microsoft \ WebManagement \ Server / v WindowsAuthenticationEnabled / t REG_DWORD / d 1
  2. 为用户在网站目录中运行TFS构建服务权限。
  3. 这是我使用的MSBuild参数。用您的名字替换各种名称。我正在使用DEV和任何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管理器中。


3
投票

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

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

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

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

奇怪的是,您的设置建议您使用IIS 7,因为您可以设置分层设置等。但是,该URL,“/ MSDEPLOYAGENTSERVICE”表明您的计算机正在尝试使用该服务...几乎就像它认为它的IIS 6.该服务需要管理员访问权限,这就是您收到该错误的原因。

根据错误,您似乎从MSbuild调用此函数,可能直接从Visual Studio调用。您可能希望查看给定的设置,并查看其中是否有任何内容导致此路径和/或服务器选择。

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

基本上你想要看到它调用不同的URL,http:// <> /msdeploy.axd(如果我没记错的话)来正确调用处理程序。


2
投票

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

如果有疑问,请问自己,“你试过把它关掉然后再打开吗?” 我意识到这个建议不会帮助每个人解决这个模棱两可的错误 - 只有少数选择。


1
投票

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

ERROR_USER_IS_NOT_ADMIN

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

MyMachineName \ MyWebDeployUser


1
投票

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


0
投票

在我们运行Windows Server 2003的域控制器上安装MS15-025MS15-027的修补程序之后,Web部署昨天停止使用当前Windows用户的身份(它使用显式凭据)。

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

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

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


0
投票

还有另一种可能性:由于尝试使用Web部署进行部署失败,您的帐户已被锁定。重置您的帐户或让您的系统管理员为您执行此操作。很沮丧。

© www.soinside.com 2019 - 2024. All rights reserved.