Web Deploy 3.0在发布时激怒了401错误

时间:2013-02-18 05:10:24

标签: visual-studio iis webdeploy

我似乎无法将一个简单的应用程序部署到我是其管理员的IIS服务器上。以下是我从VS2010获取的错误消息(修改域名以保护无辜者):

    ------ Build started: Project: HelloWorldWeb, Configuration: Debug Any CPU ------
      HelloWorldWeb -> D:\$Data\mhtest\HelloWorldWeb\bin\HelloWorldWeb.dll
    ------ Publish started: Project: HelloWorldWeb, Configuration: Debug Any CPU ------
    Transformed Web.config using Web.Debug.config into obj\Debug\TransformWebConfig\transformed\Web.config.
    Auto ConnectionString Transformed Account\Web.config into obj\Debug\CSAutoParameterize\transformed\Account\Web.config.
    Auto ConnectionString Transformed obj\Debug\TransformWebConfig\transformed\Web.config into obj\Debug\CSAutoParameterize\transformed\Web.config.
    Copying all files to temporary location below for package/publish:
    obj\Debug\Package\PackageTmp.
    Start Web Deploy Publish the Application/package to http://www.myserver.com/MSDEPLOYAGENTSERVICE ...
    C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets(3847,5): Error : Web deployment task failed.(Remote agent (URL http://www.myserver.com/MSDEPLOYAGENTSERVICE) could not be contacted.  Make sure the remote agent service is installed and started on the target computer.)
    Make sure the site name, user name, and password are correct. If the issue is not resolved, please contact your local or server administrator.
    Error details:
    Remote agent (URL http://www.myserver.com/MSDEPLOYAGENTSERVICE) could not be contacted.  Make sure the remote agent service is installed and started on the target computer.
    An unsupported response was received. The response header 'MSDeploy.Response' was 'V1' but 'v1' was expected.
    The remote server returned an error: (401) Unauthorized.
    Publish failed to deploy.
    ========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ==========
    ========== Publish: 0 succeeded, 1 failed, 0 skipped ==========

到目前为止,我有:

  • 在IIS服务器上安装Web Deploy 3.0
  • 已安装的Web管理服务,虽然我认为我还没有尝试使用它,但我想暂时在端口80上完成所有这些(而不是8172)。
  • 确保服务MsDepSvc作为Administrators成员的用户运行
  • 确保我在部署期间在VS2010中使用的凭据是Administrators成员的用户
  • 确保我输入的网站和应用程序与IIS服务器上已存在的内容相匹配

其他细节:

  • IIS服务器是远程的,位于防火墙后面,而不是我工作站的域。我假设我应该使用Basic Auth这样做,虽然如果它不是默认值,我找不到指定它的方法。
  • 如果我打开浏览器并导航到http://www.myserver.com/MSDEPLOYAGENTSERVICE,我肯定会提示我输入凭据。如果我输入有效的管理员凭据,我会看到一个空白屏幕 - 网络跟踪显示服务器以401响应。

1 个答案:

答案 0 :(得分:4)

我设法让它发挥作用。我回到了故障排除文档: http://www.iis.net/learn/publish/troubleshooting-web-deploy/troubleshooting-common-problems-with-web-deploy

大约三分之一的时间它会引用401错误,我会更仔细地阅读:

尝试以非管理员身份访问Remote Agent Service

症状

Microsoft.Web.Deployment.DeploymentException:

Could not complete the request to remote agent URL 'http://DestinationServer/msdeployAgentService'. ---> System.Net.WebException: The remote server returned an error: (401) Unauthorized.

ROOT CAUSE

远程代理服务要求调用方是Administrators组的成员,或者是已添加到Administrators组的域帐户。 由于Web Deploy 2.0中存在错误,不是内置帐户的本地管理员将无法使用Remote Agent服务。

FIX /替代方法

提供管理凭据

所以,我不需要使用“一个”管理员帐户,我需要使用“管理员”帐户。我可能第一次注意到这一点,如果它没有使用令人困惑的双阴性,并清楚当前版本中存在的错误,即在撰写本文时为3.0。