0

Это, наверное, глупый вопрос, и я просто пропущу что-то очевидное. Я оглядывался на обработку ошибок в Интернете и так же, и я просто не могу найти ответ о том, почему это происходит.WebException getResponse() not catching

В основном сервер, с которого я звоню, отправляет json и обратно, но имеет прерывистые проблемы при запросах - а именно 502 BadGateway - нет других. Когда я говорю прерывисто, я подчеркиваю, что, поскольку он может отлично работать на 200 запросов без сбоев в течение 5 часов, тогда бросьте 502, но это также может произойти по первому запросу. Трудно предсказать. Кроме того, следует отметить, что у меня нет доступа к серверу, его конфигурациям или тому подобному. Полностью удаленный.

В среде dev я могу продолжать исключение, и программа продолжает работать, и - на тот же сервер, используя тот же запрос, - при следующем запросе, если я не получу 502, котор он успешно обрабатывает. Однако автономно от платформы dev я получаю жесткий сбой без данных исключения.

Я пробовал перемещать try/catch, отделяя вызов проблемы от остальной части кода, комбинируя его так далее, и я всегда получал ту же проблему.

Оказалось, что поздно, и я, вероятно, просто не обращаюсь с ним правильно, поэтому любое руководство ценится. Я отказываюсь отказаться от этого сегодня вечером - это был шип в моей стороне уже около недели. Если бы я был просто скрабом и видел бы свежие глаза, смеяться надо мной и звонить мне.

Заранее благодарен

пс. исключение выпускается в GetResponse()

try 
     { 
      using (HttpWebResponse inboundResponse = (HttpWebResponse)outboundRequest.GetResponse()) //exception here for 502 
      using (StreamReader stream = new StreamReader(inboundResponse.GetResponseStream())) 
      using (JsonTextReader reader = new JsonTextReader(stream)) 
      { 
       List<T> outputData = new List<T>(); 
       while (reader.Read()) 
       { 
        JsonSerializer serializer = new JsonSerializer(); 
        var tempData = serializer.Deserialize<T>(reader); 
        outputData.Add(tempData); 
       } 
       inboundResponse.Close(); 
       return outputData; 
      } 
     } 
     catch (WebException e) 
     { 
      if (e.Status == WebExceptionStatus.ProtocolError) 
      { 
       UIController.addSystemMessageToChat("Protocol Error"); 
       switch(((HttpWebResponse)e.Response).StatusCode) 
       { 
        case HttpStatusCode.BadGateway: 
         UIController.addSystemMessageToChat("Resending Response"); 
         //process exception 
        default: 
         throw; 
       } 
      } 

     } 

ответ

1

Это не может быть WebException

Попробуйте добавить задвижку для Exception в обработчик:

try 
{ 
    using (HttpWebResponse inboundResponse = (HttpWebResponse)outboundRequest.GetResponse()) //exception here for 502 
    using (StreamReader stream = new StreamReader(inboundResponse.GetResponseStream())) 
    using (JsonTextReader reader = new JsonTextReader(stream)) 
    { 
     List<T> outputData = new List<T>(); 
     while (reader.Read()) 
     { 
      JsonSerializer serializer = new JsonSerializer(); 
      var tempData = serializer.Deserialize<T>(reader); 
      outputData.Add(tempData); 
     } 
     inboundResponse.Close(); 
     return outputData; 
    } 
} 
catch (WebException e) 
{ 
    if (e.Status == WebExceptionStatus.ProtocolError) 
    { 
     UIController.addSystemMessageToChat("Protocol Error"); 
     switch(((HttpWebResponse)e.Response).StatusCode) 
     { 
      case HttpStatusCode.BadGateway: 
       UIController.addSystemMessageToChat("Resending Response"); 
       //process exception 
      default: 
       throw; 
     } 
    } 

} 
catch (Exception e) 
{ 
    // catch and handle an unknown/unexpected exception type 
} 
+0

Еще ничего - Держит сбой в автономном от dev env. Я почесал голову ... Спасибо за быстрый ответ. Любые другие предложения? – Gabe

+0

Оказывается, вы были правы. Догадаться. Спасибо, глобальный тип исключения был брошен и вызвал сильный крах. – Gabe