在检查了所有常见的嫌疑人之后,我有点不知所措。
最令人困惑的事情之一是,我可以通过 Visual Studio 在 Build Agent 服务器上进行部署,使用相同的 URL 到相同的服务器,相同的代码(实际上是从s
最新版本的构建代理文件夹中复制了 Visual Studio 解决方案)
但是,通过 TFS 2015 构建时,我看到以下情况:
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\Web\Microsoft.Web.Publishing.targets(4276,5): 错误:Web 部署任务失败。(无法完成对远程代理 URL 的请求'https://siteurl:8172/msdeploy.axd?site=站点名称”。)
此错误表示您无法连接到服务器。请确保服务 URL 正确、此计算机和服务器计算机上的防火墙和网络设置已正确配置,并且服务器上已启动相应的服务。
错误详情:
无法完成对远程代理 URL 的请求'https://siteurl:8172/msdeploy.axd?site=站点名称“”。
底层连接已关闭:发送时发生意外错误。
无法从传输连接读取数据:远程主机强制关闭现有连接。
远程主机强制关闭现有连接
此外,当 TFS 进行构建时,目标 IIS 服务器上的 WMsvc 日志不会显示请求到达服务器,但是当 Visual Studio 进行构建时,它确实到达了服务器。
TFS 中传递的 MSBuild 参数(为方便阅读添加了换行符):
/p:GenerateBuildInfoConfigFile=false
/p:DeployOnBuild=true;
DeployTarget=MSDeployPublish;
MSDeployPublishMethod=WMSvc;
EnableMSDeployBackup=False;
DeployIisAppPath=sitename;
MsDeployServiceUrl=https://siteurl:8172/msdeploy.axd;
AllowUntrustedCertificate=True;
username=$(Web Deploy Username);
password=$(Web Deploy Password);
SkipExtraFilesOnServer=True
构建定义是从另一个工作构建复制而来的,唯一的变化是 URL 和配置。
这似乎是一个网络问题,但我不知道为什么它可以通过 Visual Studio 从同一台服务器工作,但如果源(TFS 构建代理服务器)和目标(IIS Web 服务器)相同、端口相同、都使用 https、Web Deploy 等,则不能通过 TFS 工作。
关于如何进一步调试有什么想法吗?
附加信息:
目标服务器:Windows Server 2012R2(Azure 上的虚拟机)
答案1
检查 TLS 是否不匹配。我们使用 SchUseStrongCrypto 注册密钥在一台机器上强制使用 TLS 1.2,而在另一台机器上则不强制使用。这导致了与 OP 遇到的“强制关闭”相同的情况。博客中详细介绍了此处https://fuseit.zendesk.com/hc/en-us/articles/360000328595