这可能是一个愚蠢的问题,我只是遗漏了一些明显的东西。我已经四处寻找处理网页错误的问题,而且我似乎无法找到解决这个问题的原因。
基本上我正在呼叫的服务器发送json并返回但是在请求上有间歇性问题 - 即502 BadGateway - 没有其他人。当我说断断续续时我强调,因为它可以完美地工作200次请求而不会失败超过5小时然后抛出502,但它也可能在第一次请求时发生。很难预测。此外,应该指出,我无法访问服务器,它的配置或类似的东西。完全偏远。
在开发环境中,我可以继续执行异常,并且程序继续运行 - 对于使用相同请求的同一服务器 - 在下一个请求时,如果我没有收到502它成功处理。但是,独立于开发平台后,我遇到了一个没有异常数据的硬崩溃。
我尝试过移动try / catch,将问题调用与其余代码分开,将它组合起来等等,我总是收到同样的问题。
已经很晚了,我可能只是没有正确处理它,所以任何指导都表示赞赏。我今晚拒绝放弃这一点 - 在我身边荆棘大约一周了。如果我只是一个磨砂膏,并且会看到新鲜的眼睛,嘲笑我并叫我出去。
提前致谢
PS。异常发生在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;
}
}
}
答案 0 :(得分:1)
可能不是WebException
尝试将Exception
的catch添加到处理程序中:
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
}