Не удается получить фактическую ошибку в ответе на запрос REST. Fiddler показывает мне больше деталей об ошибках. В .NET все, что я получаю, это 500 - Внутренняя ошибка сервера - PullRequest
3 голосов
/ 30 марта 2012

В .NET я звоню в службу отдыха и получаю исключение - 500 Internal Server Error.

HttpWebResponse response = request.GetResponse() as HttpWebResponse

Когда я анализирую это в Fiddler (в TextView), я получаю много подробностей о правильном исключении, которое вызвало ошибку.

В моем объекте исключения я не могу получить эту информацию ни в InnerException (она равна нулю), ни в самом объекте Response.

Есть идеи?

Ответы [ 2 ]

8 голосов
/ 30 марта 2012

Попробуйте посмотреть свойство WebException.Response :

catch(WebException ex)
{
    Console.WriteLine(ex.Message);

    if (ex.Status == WebExceptionStatus.ProtocolError)
    {
        Console.WriteLine("Status Code : {0}", ((HttpWebResponse)ex.Response).StatusCode);
        Console.WriteLine("Status Description : {0}", ((HttpWebResponse)ex.Response).StatusDescription);

        using (Stream responseStream = ex.Response.GetResponseStream())
        {
            if (responseStream != null)
            {
                using (StreamReader responseReader = new StreamReader(responseStream))
                {
                    Console.WriteLine(responseReader.ReadToEnd());
                }
            }
        }
    }
}
5 голосов
/ 30 марта 2012

«Внутреннее» исключение происходит на удаленном хосте. WebException имеет свойство Response, которое вы можете прочитать, чтобы получить подробную информацию.

...