태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.


2007/03/14 18:57

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;
        }
    }

Trackback 0 Comment 0