Это, наверное, глупый вопрос, и я просто пропущу что-то очевидное. Я оглядывался на обработку ошибок в Интернете и так же, и я просто не могу найти ответ о том, почему это происходит.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;
}
}
}
Еще ничего - Держит сбой в автономном от dev env. Я почесал голову ... Спасибо за быстрый ответ. Любые другие предложения? – Gabe
Оказывается, вы были правы. Догадаться. Спасибо, глобальный тип исключения был брошен и вызвал сильный крах. – Gabe