WebDeploy(401)未经授权的错误

时间:2011-01-26 16:27:21

标签: iis msbuild msdeploy webdeploy

尝试使用不是目标服务器上的本地管理员的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)

10 个答案:

答案 0 :(得分:50)

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

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

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

回收WMSvc:

net stop wmsvc & net start wmsvc

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

答案 1 :(得分:5)

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

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

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

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

答案 2 :(得分: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 ="任何CPU" / p:DeployOnBuild = true / p:AllowUntrustedCertificate = true / p:authType = NTLM

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

  5. 跟踪对于诊断问题非常有帮助。您可以在IIS管理器中启用管理服务委派中的跟踪。最初我在IIS管理器中看不到管理服务委派。要表明我必须改变'从“添加程序”进行Web部署,以便安装管理服务委派。看起来它已安装,但我重置下拉列表以安装到我的计算机并完成安装。然后它出现在IIS管理器中。

答案 3 :(得分:3)

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

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

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

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

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

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

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

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

答案 4 :(得分:2)

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

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

答案 5 :(得分:1)

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

  

ERROR_USER_IS_NOT_ADMIN

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

  

MyMachineName \ MyWebDeployUser

答案 6 :(得分:1)

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

答案 7 :(得分:0)

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

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

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

答案 8 :(得分:0)

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

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

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

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

答案 9 :(得分:0)

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