【发布时间】:2011-08-05 12:26:26
【问题描述】:
所以我的应用程序正在与服务器交换请求/响应(没有问题),直到互联网连接中断几秒钟,然后回来。然后是这样的代码:
response = (HttpWebResponse)request.GetResponse();
将抛出异常,状态为ReceiveFailure、ConnectFailure、KeepAliveFailure 等。
现在,如果互联网连接恢复,我能够继续与服务器通信,这一点非常重要,否则我必须从头开始,这将需要很长时间。
当互联网恢复正常时,您将如何恢复这种通信?
目前,我一直在检查与服务器通信的可能性,直到有可能(至少在理论上)。我的代码尝试如下所示:
try
{
response = (HttpWebResponse)request.GetResponse();
}
catch (WebException ex)
{
// We have a problem receiving stuff from the server.
// We'll keep on trying for a while
if (ex.Status == WebExceptionStatus.ReceiveFailure ||
ex.Status == WebExceptionStatus.ConnectFailure ||
ex.Status == WebExceptionStatus.KeepAliveFailure)
{
bool stillNoInternet = true;
// keep trying to talk to the server
while (stillNoInternet)
{
try
{
response = (HttpWebResponse)request.GetResponse();
stillNoInternet = false;
}
catch
{
stillNoInternet = true;
}
}
}
}
但是,问题在于第二个 try-catch 语句即使在互联网恢复时也会不断抛出异常。
我做错了什么?有没有其他方法可以解决这个问题?
谢谢!
【问题讨论】:
-
不是您问题的答案,但如果您的连接中断很长时间,您目前没有真正的好方法来解决这个问题...
-
服务器也有5分钟的超时时间,所以如果连接真的掉线超过5分钟,那就这样杀了。
-
你为什么不设置一个定时器,每 10 分钟测试一次连接,然后重新启动它正在做的事情?或者也许每次发生连接失败时都会将等待时间增加一分钟。
标签: c# .net httpwebrequest httpwebresponse system.net.webexception