문제

코드를 보라 :

using (var client = new WebClient())
{
    try
    {
        var bytesReceived = client.UploadData("http://localhost", bytesToPost);
        var response = client.Encoding.GetString(bytesReceived);
    }
    catch (Exception ex)
    {
    }
}

UPLOADDATA 메소드가 호출되면이 HTTP 500 내부 서버 오류가 발생합니다. 그러나 디버깅하는 동안 "예를 들어"객체의 어느 곳에서나 오류 설명을 볼 수 없습니다. 오류 설명을 읽을 수 있도록이 코드를 다시 작성하려면 어떻게해야합니까?

도움이 되었습니까?

해결책

웹 서버는 종종 자세한 내용이있는 오류 페이지를 반환합니다 (서버에 따라 HTML 또는 일반 텍스트). 잡아서 이것을 잡을 수 있습니다 WebException 그리고 그것의 응답 스트림을 읽습니다 Response 재산.

다른 팁

이런 방식으로 디버깅에 유용한 정보를 찾았습니다.

        catch (WebException ex)
        {
            HttpWebResponse httpWebResponse = (HttpWebResponse)ex.Response;
            String details = "NONE";
            String statusCode = "NONE";
            if (httpWebResponse != null)
            {
                details = httpWebResponse.StatusDescription;
                statusCode = httpWebResponse.StatusCode.ToString();
            }

            Response.Clear();
            Response.Write(ex.Message);
            Response.Write("<BR />");
            Response.Write(ex.Status);
            Response.Write("<BR />");
            Response.Write(statusCode);
            Response.Write("<BR />");
            Response.Write(details);
            Response.Write("<BR />");
            Response.Write(ex);
            Response.Write("<BR />");
        }

httpexception을 잡아서 gethtmlerrormessage ()를 호출하십시오.

나는 항상 좋아했습니다

Debug.WriteLine( ex.ToString() );

httpwebrequest 및 httpwebresponse를 사용해야합니다. WebClient는 기본 웹 커뮤니케이션을 수행하는 데 사용하는 가장 간단한 방법이지만 필요한 기능을 제공하지는 않습니다. 예외가 발생하지 않기 때문에이 작업을 수행하는 것이 낫다고 생각합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top