2009-07-22 3 views
14

Я общаюсь с веб-сервером из .Net. Веб-сервер выдает ошибку внутреннего внутреннего сервера 500 и записывает подробное сообщение об ошибке.WebException при чтении потока ответов WebException

Я пытаюсь прочитать сообщение об ошибке, полученное из исключения в Интернете, но получающее другое исключение в Интернете. Почему выбрано второе WebException?

try 
{ 
    var webResponse = (HttpWebResponse)webRequest.GetResponse(); 
} 
catch (WebException e) 
{ 
    if (e.Status == WebExceptionStatus.ProtocolError) 
    { 
    // the next line throws a web exception 
    Console.WriteLine(new StreamReader(e.Response.GetResponseStream()).ReadToEnd()); 
    } 
} 

ответ

12

Почему это удивительно? Попробуйте следующее из MSDN:

try { 
    // Create a web request for an invalid site. Substitute the "invalid site" strong in the Create call with a invalid name. 
    HttpWebRequest myHttpWebRequest = (HttpWebRequest) WebRequest.Create("invalid site"); 

    // Get the associated response for the above request. 
    using (HttpWebResponse myHttpWebResponse = 
       (HttpWebResponse) myHttpWebRequest.GetResponse()) { 
     myHttpWebResponse.Close(); 
    } 
} 
catch(WebException e) { 
    Console.WriteLine("This program is expected to throw WebException on successful run."+ 
         "\n\nException Message :" + e.Message); 
    if(e.Status == WebExceptionStatus.ProtocolError) { 
     var response = ((HttpWebResponse)e.Response); 
     Console.WriteLine("Status Code : {0}", response.StatusCode); 
     Console.WriteLine("Status Description : {0}", response.StatusDescription); 

     try { 
      using (var stream = response.GetResponseStream()) { 
      using (var reader = new StreamReader(stream)) { 
       var text = reader.ReadToEnd(); 
       Console.WriteLine(text); 
      } 
      } 
     } catch (WebException ex) { 
      // Oh, well, we tried 
     } 
    } 
} 
catch(Exception e) { 
    Console.WriteLine(e.Message); 
} 
+0

Amm, потому что я действительно хочу прочитать сообщение об ошибке, переданное по кабелю. Веб-сайт не существует, он отвечает с ошибкой, которую я хочу зарегистрировать/проанализировать на стороне клиента. – ripper234

+0

Если веб-сайт не имеет значения, откуда возникла ошибка? Во всяком случае, обновлено. –

+1

Это _not_ несуществующий :) – ripper234

 Смежные вопросы

  • Нет связанных вопросов^_^