使用Visual Studio 2012进行Web Deploy到安装有IIS 7的Windows Server 2008 R2,出现“/msdeploy.axd 404”错误

23

在 Visual Studio 2012 RC 中,当我尝试验证 Web Deploy 连接时,会出现以下错误信息:

ERROR_DESTINATION_NOT_REACHABLE

enter image description here

需要在服务器上启动所需的Web管理服务,并安装Web Deploy 3.0 RC。然后,使用远程桌面连接登录服务器并检查位于C:\inetpub\logs\LogFiles\W3SVC1的IIS日志。在那里,我可以看到我的连接验证尝试,因为它们包含我的IP地址:
2012-07-13 20:58:49 185.201.117.17 HEAD /msdeploy.axd site=Default%20Web%20Site 8172 - 189.10.32.194 - 404 0 2 78

它给我返回了404错误。

尝试了将近6个小时(阅读了很多材料,包括IIS团队的这篇出色的故障排除指南Troubleshooting Web Deploy problems with Visual Studio和此相关问题Visual Studio 2010 Web deployment task failed),我决定在这里寻求帮助,看看是否有人知道问题所在...你知道是什么导致了这个404错误吗?

如果需要更多信息,请告诉我,我会提供的... :)

编辑1

昨天我还尝试在我的本地机器上使用以下msdeploy命令,以列出服务器上名为test的文件夹的内容[并且它按预期工作]:

C:\Program Files\IIS\Microsoft Web Deploy V3>msdeploy -verb:dump -source:content
path=c:\test,computerName=xxxxxxxxxx.publiccloud.com.br,username=User,password=Password
Info: Using ID 'a246a13c-7777-4226-964c-fe9934c60b77' for connections to the rem
ote server.
MSDeploy.contentPath
c:\test
c:\test
c:\test\test.txt

编辑2

经过多次安装/卸载操作,我终于到了一个Windows Server 2008返回503 HTTP错误的地步,当我尝试使用VS 2012 RC或命令行中的msdeploy发布网站时。

看起来现在最好的做法是对Windows Server 2008进行清洁安装,因为我得到了一个混乱的VM服务器映像。希望这会奏效。

仅供记录,这是VS 2012尝试执行的msdeploy命令。我复制/粘贴并尝试了它与命令行中的msdeploy:

C:\Program Files (x86)\IIS\Microsoft Web Deploy V3\msdeploy.exe -source:manifest='E:\SISPEC\SISPEC\obj\Release\Package\SISPEC.SourceManifest.xml' -dest:auto,ComputerName="https://xxxxxxxxxx.publiccloud.com.br:8172/msdeploy.axd?site=Default%20Web%20Site",UserName='UserName',Password='Password',IncludeAcls='False',AuthType='Basic' -verb:sync -enableRule:DoNotDeleteRule -disableLink:AppPoolExtension -disableLink:ContentExtension -disableLink:CertificateExtension -setParamFile:"E:\SISPEC\SISPEC\obj\Release\Package\SISPEC.Publish.Parameters.xml" -retryAttempts=2

只是为了得到相同的503服务器不可用消息。

编辑3

这个问题在IIS Web部署工具(MS Deploy)论坛这里被同时发布了。

9个回答

26

4
这个对我有用,如果你从WEBPI安装,它不会安装全部功能。 - Paul Lemke
我知道在最初的安装中应该勾选“所有功能”的框,而不是“典型”的框。 - Chris Knight
1
为什么?????非常感谢lol。没有实际部署能力,UI组件有什么用处呢? - TheXenocide

3

我不得不手动添加部署处理程序,在IIS管理器中,选择服务器,选择“ IIS | 处理程序映射 | 添加托管处理程序... ”。

Request path: msdeploy.axd
Type: Microsoft.Web.Deployment.DeploymentAgentHandler,..., Version=9...
Name: Web Deploy Whatever

这对我有用(我在处理程序中没有看到msdeploy.axd,它给了我404)。在另一台服务器上(Windows Server 2012R2 x64),在“添加托管处理程序”对话框中显示处理程序之前,我还必须安装.NET Framework 3.5。微软真是胡说八道。 - Pasi Savolainen
由于某些原因,我也没有处理程序映射,但手动添加似乎没有帮助。 - Chris Marisic

3
我遇到了同样的错误(ERROR_DESTINATION_NOT_REACHABLE)。我通过打开8172端口解决了这个问题。
然后我遇到了错误:ERR_COULD_NOT_CONNECT_TO_REMOVESVC,我安装了Web Deploy 3.0的每个组件,并成功解决了这个问题。它试图访问/MSDEPLOYAGENTSERVICE,但默认情况下Web Deploy 3.0安装程序没有安装该服务。

2

在我的情况下,WMSVC默认颁发的证书未针对机器名称颁发。我的解决方案是:

  1. 从我的域CA为机器名称颁发证书。如果您愿意信任该证书,则可以自签名。
  2. 将该证书安装在个人证书存储中
  3. 停止Web管理服务
  4. 更改证书为我正确颁发的证书
  5. 重新启动服务。

这是我在将Web部署到sysprep'd Azure VM映像时遇到的问题。停止服务,创建一个新的自签名证书并分配它(在服务器级别的IIS管理服务图标中)解决了这个问题... - Flapper

1

首先,我尝试了Web Deploy 3.0的修复安装,但没有起作用。卸载并重新安装解决了我的问题。


1
在我的情况下,服务器上同时安装了Web Deploy 2.0和3.0。 卸载两者并仅安装3.0解决了我的问题。

1

你检查过处理程序了吗?你可以通过在同一文件夹中创建一个HTML页面并尝试访问该HTML来测试。如果可以,那么请检查你的网站是否具有必要的处理程序。此外,请确保你的DNS记录指向正确的IP地址。


我创建了一个test.html页面,并将其放置在服务器上的C:\ inetpub \ wwwroot文件夹中。然后,我使用以下方式从我的本地机器访问它:http://xxxxxxxxxx.publiccloud.com.br/test.html,测试成功。我可以阅读该页面。当您说“检查您的站点是否具有必要的处理程序”时,我不明白。我认为DNS配置不是问题所在。 - Leniel Maccaferri
对于运行在集成模式下的IIS 7.0,您可以使用system.WebServer部分中的handlers元素来注册处理程序。请参见以下示例。<configuration> <system.web> <httpHandlers> <add verb="" path="SampleHandler.new" type="SampleHandler, SampleHandlerAssembly" /> </httpHandlers> </system.web> <system.webServer> <add name=SampleHandler" verb="" path="SampleHandler.new" Modules="IsapiModule" scriptProcessor="FrameworkPath\aspnet_isapi.dll" resourceType="File" /> </system.webServer> </configuration> - user1524769

0
如果之前的所有迹象都失败了,并且您正在使用 Azure 虚拟机,在其中 8172 的端点是打开的,我已经通过删除端点并重新打开来解决了问题。我相信第一次选择启用浮动 IP,并且那没有起作用。只需再次创建端点,选择禁用浮动 IP,然后完成即可!

0

确保Web管理服务已启动。

我删除了SSL证书,导致服务停止工作。


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