냐냐한 IT/냐냐한 ASP.NET && MS-SQL

.Net 2.0 / WebException: 기본 연결이 닫혔습니다. 보내기에서 예기치 않은 오류가 발생

소소하냐 2022. 7. 5. 11:34

잘 사용하던 페이지에서 오류가 발생했습니다. (.NET Framwork, 2.0 web form) 

(다른 곳에서 관리하는 API를 호출하여 하루에 한번 데이터를 갱신하는 페이지) 

 

오류는 아래와 같습니다. 

- 전송 스트림에서 예기치 않은 EOF 또는 0바이트를 받았습니다. 

- WebException: 기본 연결이 닫혔습니다. 보내기에서 예기치 않은 오류가 발생했습니다. 

 

 

소스 수정도 없었고,

로컬 서버와, 프로덕션 서버는 정상적으로 동작하고 있었기에 소스 수정은 생각하지 않고 있었습니다. 

서버 환경 문제로 생각하고 IIS 설정을 맞춰보았지만 별 소용이 없었습니다. 

 

여러 검색 결과에서, TLS 버전 문제를 이야기합니다.

(이것도 서버 환경 문제로 발생한거 같긴 합니다. 언제, 왜 변경이 되었는지는 여러 명이 관리하는 개발 서버라 알 수 없네요)

 

해결을 위해,

- 프레임워크 버전은 올릴 수 없는 상황이고

- 해결 방법 소스로 검색한 코드. 하지만 저의 소스 버전에는 Tls12, Tls11  이 정의 되어있지 않습니다. 

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12| SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;

 

그리하여, 아래 코드를 추가하여 해결하였습니다. 

ServicePointManager.SecurityProtocol = (SecurityProtocolType)768 | (SecurityProtocolType)3072;

 

최종

using System.Net;

// .... 

// WebRequest.Create 전에 SecurityProtocolType 추가 
ServicePointManager.SecurityProtocol = (SecurityProtocolType)768 | (SecurityProtocolType)3072;
var webRequest = System.Net.WebRequest.Create("~~~");