나는 여기서 일반적인 용의자를 모두 조사한 결과 약간 당황했습니다.
가장 당혹스러운 점 중 하나는 동일한 URL을 사용하여 동일한 서버, 동일한 코드를 사용하여 빌드 에이전트 서버에서 Visual Studio를 통해 배포할 수 있다는 것입니다(말 그대로 s
최신 빌드의 빌드 에이전트 폴더에서 Visual Studio 솔루션을 복사했습니다).
그러나 TFS 2015를 통해 빌드할 때 다음이 표시됩니다.
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\Web\Microsoft.Web.Publishing.targets(4276,5): 오류: 웹 배포 작업이 실패했습니다. (원격 에이전트 URL '에 대한 요청을 완료할 수 없습니다.https://siteurl:8172/msdeploy.axd?site=사이트이름'.)
이 오류는 서버에 연결할 수 없음을 나타냅니다. 서비스 URL이 올바른지, 이 컴퓨터와 서버 컴퓨터의 방화벽 및 네트워크 설정이 올바르게 구성되었는지, 서버에서 적절한 서비스가 시작되었는지 확인하십시오.
오류 정보:
원격 에이전트 URL '에 대한 요청을 완료할 수 없습니다.https://siteurl:8172/msdeploy.axd?site=사이트이름'.
기본 연결이 닫혔습니다. 전송 중에 예기치 않은 오류가 발생했습니다.
전송 연결에서 데이터를 읽을 수 없습니다. 기존 연결이 원격 호스트에 의해 강제로 닫혔습니다.
기존 연결이 원격 호스트에 의해 강제로 종료되었습니다.
또한 대상 IIS 서버의 WMsvc 로그에는 TFS가 빌드를 수행할 때 서버에 도달하는 요청이 표시되지 않지만 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과 구성만 변경하여 다른 작업 빌드에서 복사되었습니다.
네트워크 문제인 것 같은데 소스(TFS 빌드 에이전트 서버)와 대상(IIS 웹 서버)이 동일한 경우 Visual Studio를 통해 동일한 서버에서는 작동하지만 TFS를 통해서는 작동하지 않는 이유를 모르겠습니다. , https, Web Deploy 등을 사용하는 포트는 동일합니다.
추가 디버깅 방법에 대한 아이디어가 있습니까?
추가 정보:
대상 서버: Windows Server 2012R2(Azure의 VM)
답변1
TLS 불일치를 확인하세요. 우리는 SchUseStrongCrypto reg 키를 사용하여 한 컴퓨터에서는 TLS 1.2를 강제하고 다른 컴퓨터에서는 강제하지 않았습니다. 이로 인해 OP가 경험한 것과 동일한 "강제 폐쇄"가 발생했습니다. 자세한 내용은 여기에서 블로그에 게시했습니다.https://fuseit.zendesk.com/hc/en-us/articles/360000328595