是否可以使用WebClient定义一种类型的WebException



这是我上一个问题的延续:以块为单位下载文件

现在,我有一个工作应用程序,可以下载和播放大型媒体文件。然而,仍然存在一个问题。正如我所注意到的,如果下载时间超过五分钟,连接就会因为超时而关闭。这不是问题,因为应用程序可以很容易地重新打开它,发送另一个请求,例如

现在,这是一个问题:响应可能有几种类型的错误,但我无法将"超时过期"异常(如果我抓到这个,我会使用该方法,它将继续下载)与其他异常区分开来,这些异常实际上是由错误引起的。它们都有WebException类型。我也尝试了本文中的解决方案,但ex.Status值为"未知错误"(!)。消息值也等于"远程服务器返回错误:NotFound。"

所以,我的问题很简单:如何定义错误是由超时引起的?

可能的解决方案:

WebException的类型可以这样定义:

 catch (WebException ex)
            {
              HttpWebResponse response = (HttpWebResponse)ex.Response;
              if (response.StatusCode == HttpStatusCode.someCode)
                    DoSomething();
            }

因此,在我的情况下,HttpStatusCode将是"Forbidden"(错误403)。利用这些信息,我可以创建未来的逻辑。

最新更新