WebRequest 또는 WebClient 사용시 "기본 연결이 닫혔습니다. 예기치 않게 연결이 닫혔습니다." 예외 발생하는 경우 해결 방법

※ 개발환경
- .NET Framework 2.0
- C# 2.0
- Visual Studio 2005
- Windows XP
1. WebRequest 사용시 해결 방법
문제 :
HttpWebRequest request = ( HttpWebRequest ) WebRequest.Create ( uri );
HttpWebResponse response = (HttpWebResponse) request.GetResponse ();
Stream stream = response.GetResponseStream ();
위의 코드에서 .... = ... request.GetResponse()부분에서 아래 예외 발생.
한글 예외 : "기본 연결이 닫혔습니다. 예기치 않게 연결이 닫혔습니다."
영문 예외 : "The underlying connection was closed: An unexpected error occurred on a receive."
해결방법 : .UserAgent를 아래와 같이 해줄경우 해결할 수 있었다.
.KeepAlive와 ProtocolVersion은 영향을 주지 않았다.
HttpWebRequest request = ( HttpWebRequest ) WebRequest.Create ( uri );
//request.KeepAlive = false;
//request.ProtocolVersion = HttpVersion.Version10;
request.UserAgent = "Mozilla/3.0 (compatible; My Browser/1.0)";
HttpWebResponse response = (HttpWebResponse) request.GetResponse ();
Stream stream = response.GetResponseStream ();
...
2. WebClient 사용시 해결 방법
해결방법 : WebClient를 상속받는 클래스를 하나 생성한 다음
GetWebRequest()메소드를 아래와 같이 수정한다.
class MyWebClient : WebClient
{
protected override WebRequest GetWebRequest ( Uri address )
{
HttpWebRequest request = ( HttpWebRequest ) base.GetWebRequest ( address );
//request.KeepAlive = false;
//request.ProtocolVersion = HttpVersion.Version10;
request.UserAgent = "Mozilla/3.0 (compatible; My Browser/1.0)";
return request;
}
}


이올린에 북마크하기
Prev
Rss Feed