TFS 2015 无法部署到特定服务器,但 Visual Studio 可以从 Build Agent 服务器部署

TFS 2015 无法部署到特定服务器,但 Visual Studio 可以从 Build Agent 服务器部署

在检查了所有常见的嫌疑人之后,我有点不知所措。

最令人困惑的事情之一是,我可以通过 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

相关内容