Web部署任务失败。无法连接...服务器未响应。

89
我一直在使用Visual Studio 2012 RC将我的Lightswitch应用程序发布到本地主机(Win 7,SQL 2008 R2,IIS 7.5),一切都很顺利。现在我正在尝试发布到远程服务器(Win 2008 R2,SQL 2008 R2,IIS 7.5),但遇到了问题。
当我尝试发布时,我收到以下错误:
Web部署任务失败。(由于服务器没有响应,无法使用指定的进程(“Web部署代理服务”)连接到远程计算机(“###.###.###.###”)。请确保在远程计算机上启动进程(“Web部署代理服务”)。有关详细信息,请访问:http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_COULD_NOT_CONNECT_TO_REMOTESVC。)
我已经检查了“了解更多”链接建议检查的每一项。我已经验证了MsDepSvc和WMSVC都在运行,并且端口80和8172都响应端口扫描。在发布设置中,对于服务URL,我正在使用远程计算机的IP地址(http://###.###.###.###)。对于用户名,我正在使用DomainName\Administrator,这是我使用RDP登录时使用的内容。
我已经在MSDN论坛上发布了帖子,其中一位成员建议我将Web部署工具从V2.0回滚到V1.1。虽然我已经这样做了,但并没有改变任何事情。
按照SO问题答案中的建议,我尝试从命令行运行msdeploy

从服务器的命令行中,我得到了以下内容:

C:\Program Files\IIS\Microsoft Web Deploy>msdeploy -verb:dump -source:dirpath=c:\temp,computername=http://SeverName:80/msdeployagentservice,username=Administrator,password=XXXX -verbose -debug Verbose: 使用 ID 'c12c3392-2290-44b7-9434-dbd0ff5f9385' 连接到远程服务器。Verbose: 预身份验证远程代理 URL 'http://ServerName:80/msdeployagentservice' 作为 'Administrator'。 MSDeploy.dirPath (name=MSDeploy.dirPath) c:\temp (name=dirPath) (keyAttribute=c:\temp) (linkName=Child1)

从开发机器的命令行中,我得到了以下内容:

"C:\Program Files\IIS\Microsoft Web Deploy V3>msdeploy -verb:dump -source:dirpath =c:\temp,computername=http://###.###.###.###:80/msdeployagentservice,username=Administrator,password=XXXX -verbose -debug Info: 使用ID“7f0b7d5b-e202-424c-a7dd-246920253081”进行远程服务器连接。详细信息:预身份验证到远程代理URL 'http://###.###.###.###:80/msdeployagentservice',用户名为 'Administrator'。详细信息:预身份验证到远程代理URL 'http://###.###.###.###:80/msdeployagentservice',用户名为 'Administrator'。错误代码:ERROR_COULD_NOT_CONNECT_TO_REMOTESVC 更多信息:使用指定的进程(“Web Deployment Agent Service”)无法连接到远程计算机(“###.###.###.###”),因为服务器未响应。请确保远程计算机上已启动进程(“Web Deployment Agent Service”)。了解更多信息,请访问:http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_COULD_NOT_CONNECT_TO_REMOTESVC。了解更多信息,请访问:http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_COULD_NOT_CONNECT_TO_REMOTESVC。---> Microsoft.Web.Deployment.DeploymentException: 无法创建类型为'dirPath'和路径为'c:\temp'的对象。 ---> System.Net.WebException: 远程服务器返回错误:(400) 错误请求。 在 System.Net.HttpWebRequest.GetResponse() 在 Microsoft.Web.Deployment.AgentClientProvider.GetHttpResponse(HttpWebRequest request) --- 内部异常堆栈跟踪的结尾 --- --- 内部异常堆栈跟踪的结尾 --- 在 Microsoft.Web.Deployment.DeploymentManager.CreateObjectPrivate(DeploymentProviderContext providerContext, DeploymentBaseOptions baseOptions, DeploymentObject sourceObject, String serverVersion) 在 Microsoft.Web.Deployment.DeploymentManager.CreateObject(DeploymentProviderOptions providerOptions, DeploymentBaseOptions baseOptions) 在 MSDeploy.MSDeploy.CreateObject(DeploymentProviderOptions providerOptions, DeploymentBaseOptions baseOptions) 在 MSDeploy.MSDeploy.ExecuteWorker() 在 MSDeploy.MSDeploy.Execute() 错误数:1。"
使用Wireshark,我发现我成功登录后,在POST /MSDEPLOYAGENTSERVICE之后,我收到了一个错误400:Bad request,如下所示:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">\r\n
<HTML><HEAD><TITLE>Bad Request</TITLE>\r\n
<META HTTP-EQUIV="Content-Type" Content="text/html; charset=us-ascii"></HEAD>\r\n
<BODY><h2>Bad Request - Invalid Content Length</h2>\r\n
<hr><p>HTTP Error 400. There is an invalid content length or chunk length in the request.</p>\r\n
</BODY></HTML>\r\n

我能找到唯一提到这种特定行为的是ISA Server 2000的Microsoft Support Article

我还应该看什么?


3
有解决方法吗?我也遇到了同样的问题。 - rybl
@rybl 我们最终选择了Windows Azure作为托管提供商。价格相当,部署功能更加紧密集成。整个体验更加顺畅。我能够在2天内部署我们的应用程序,而这是我在苦苦挣扎的IIS部署中无法完成的事情。我对这次转换非常满意。 - embedded.kyle
我在这里回答了一个类似的问题:https://dev59.com/jmMk5IYBdhLWcg3w6yDh#25537442 - André Snede
我在使用本地的2012 R2服务器时遇到了同样的问题。下面以及其他任何地方的答案都没有起作用。没有防火墙,所有服务都已启动并配置为远程连接,站点名称正确等等。我不知道还能做什么。 - Nathan McKaskle
我只是不得不启动Web部署代理服务。由于某种原因,它没有自动启动。 - Evgeny Danilenko
可能问题出在IIS管理服务的IP地址限制配置上:https://dev59.com/O2Ml5IYBdhLWcg3wDjOg#60566397 - Rafael Neto
33个回答

116

当我使用"Web Platform Installer 5.0"安装Web Deploy 3.5时,我遇到了同样的问题。

当我尝试从Visual Studio进行发布时,出现了以下错误:

---------------------------
Microsoft Visual Studio
---------------------------
Could not connect to the remote computer ("10.0.3.102") using the specified process 
("Web Management Service") because the server did not respond. Make sure that the process 
("Web Management Service") is started on the remote computer.  Learn more at: 
http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_COULD_NOT_CONNECT_TO_REMOTESVC. 
The remote server returned an error: (403) Forbidden.
---------------------------
OK   
---------------------------

我仔细检查了服务,两个都在运行。 我也关闭了防火墙,但错误还是一样的。

我是这样解决这个问题的:

  1. 打开“添加或删除程序”
  2. 点击“Microsoft Web Deploy”
  3. 点击“更改”按钮(在“卸载”旁边)
  4. 点击“下一步”

enter image description here

  1. 点击“更改”

enter image description here

  1. 添加标有红色X的功能

enter image description here

  1. 完成安装

    结果:从Visual Studio发布正常工作。


3
Lucian,你是个大牛!为什么这个不是默认选中的? - John 'Mark' Smith
6
当Web Deploy在安装IIS管理服务角色之前安装时,会出现这种情况。iis.net网站上指出:Web Deploy必须与管理服务集成组件一起安装。(为了使此选项出现在Web Deploy安装程序中,必须首先启用Web管理服务。) - Jeff Camera
5
在安装Web Deploy 3.6之前,似乎需要先安装Web管理服务(至少在我这种情况下是这样的)。典型的微软说明甚至根本没有提到这一点。我尝试使用Web Deploy 3.6安装程序安装管理服务,但一切都混乱了。我不得不卸载Web Deploy 3.6并重新安装它,然后一切都好了。此外,请确保Web部署代理和Web管理服务均已运行。 - James Wilkins
2
本以为这样会有效,但遗憾的是它没有起作用。什么都不行。 - Nathan McKaskle
1
@Lucian 我卡在这里好几个小时了!!谢谢你! - Sethles
显示剩余4条评论

69

我昨天遇到了这个问题。在我的情况下,问题的关键在于发布设置中需要填写 站点名称:,我提供了 MyApplication,但实际上它期望我提供的是:

Default Web Site/MyApplication

我已经向微软部署团队提出了这个问题,希望他们可以澄清一下,如果您没有指定现有站点名称,那么这个错误并不意味着Web Deploy服务器已经关闭,尽管这个错误信息可能让您产生这样的想法。


4
我也遇到过同样的问题。Web Deploy 真是太难搞了! - Calanus
1
Chris,下次你在波士顿的时候我请你喝啤酒。 - Mike G
2
我住在澳大利亚的克里斯,但如果我在波士顿或者你想来这里,我会请你喝几杯啤酒。 - Jon DellOro
1
三年过去了,这仍然是一个问题。三年过去了,你仍然是英雄@Chris Marisic。 - James Wilson
1
有一些要点。我输入了MyServerName/MyApplication(即我键入的内容)。天哪! - Fetchez la vache
显示剩余5条评论

12

我曾经遇到过同样的问题,解决方法是删除program files(x86)\IIS和Program Files\IIS中所有web deploy文件夹。

然后重新安装没有捆绑SQL的web deploy 1.1和web deploy 3.0。


2
这对我有用。我想我可能安装了多个版本的Web Deploy。在按照说明删除文件夹中的所有Web Deploys之后,我还安装了不带SQL捆绑的Web Deploy 3.0。在此之前,我已经安装了WebPI中“建议的托管工具”项目中的大部分项目。 - Brett

9

通过查阅多个论坛和答案,我终于成功安装了微软的Web Deploy,并测试成功地从Visual Studio进行发布(没有激活防火墙):

  1. 在服务器管理器中使用“添加角色和功能”安装IIS的“管理服务”
  2. 安装Web Deploy(重要提示:在安装“管理服务”后,选择“完成”) http://www.iis.net/downloads/microsoft/web-deploy#additionalDownloads

  3. 在服务器级别的IIS中确保

    • 打开“管理服务”
    • 允许Windows和IIS凭证
  4. 在站点级别的IIS中
    • 打开“IIS管理权限”
    • 添加将用于实际发布的用户,例如管理员

如果防火墙处于活动状态:启用“文件共享”和“远程服务管理”


当您选择自定义VM映像而不是Google的ASP.NET平台“点击部署”解决方案时,为了启用来自Visual Studio 2015及以上版本的Web Deploy,请遵循此步骤。这对我有用。 - Tushar Kshirsagar
这对我来说是缺失的一块拼图。 - user3748818

7
为解决问题,我使用了以下步骤: 服务器:WS2012。DEV Vs2012 项目MVC4。
1)在服务器上创建所需名称的空站点,或者在发布时使用“默认网站”(如果您没有将默认值重命名为其他内容)。
我使用了此链接中的信息(链接)
在服务器上使用WPI安装以下内容:
安装Web Deploy(3.5)用于托管服务器 建议的Web托管提供商服务器配置
我确保未安装其他版本。
因此,请验证您正在使用的站点名称...我使用AdminUI。 这是在测试服务器上创建的空站点。

Site Name is important.

因此,在使用向导时,请匹配站点名称。

Publish wizard

确保服务器上相关的服务正在运行。 并且您具有足够的权限来写入站点

services


谢谢!对我有用 :) - kzfabi

6

我通过重新启动Web管理服务来解决了服务器上的这个问题。


我在多次中断非常长的部署后发现了这个问题。在这种情况下,这个解决方案对我有效。 - Marco Regueira
我在Azure Web App上遇到了这个问题。在这种情况下,重新启动它也起作用了。 - David Sherret

4
Chris说: "当它真的期望我提供“默认网站/我的应用程序”时。"实际上是“默认网站”这个词,而不是你的服务器名称。
我也遇到了这个问题,花了几个小时无果,直到我尝试了这个方法。(感谢Chris!)
顺便说一句,我使用的是默认网站(服务器名称),而不是必须使用的“默认网站”这个词。有点糟糕,但至少现在我知道了。

好的决定,我本可以澄清一下,“默认网站(Default Web Site)”会根据你使用的IIS版本而有所不同。DWS(Default Web Site)是它的初始名称。我一直倾向于将网站托管在DWS下,而不是创建多个站点。 - Chris Marisic

3

我曾经遇到过同样的问题。最终通过将服务URL改为https来解决了它。


3

这个错误 ERROR_COULD_NOT_CONNECT_TO_REMOTESVC 让我花了两天时间才发现,对于我的情况来说,站点名称不匹配。远程IIS服务器上的站点名称与我在Visual Studio中设置的部署站点名称不同。希望能帮助到其他人。


1
对我来说也是一样,你的评论帮助我节省了几个小时。谢谢! - Maksim

3

同时,检查管理服务是否存在任何IP地址限制也是一个好主意 - 这些限制与Windows防火墙是分开的。

windows management service


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接