如何区分由于连接不良而从服务器和NotFound返回的NotFound?

kza*_*kza 5 c# windows-phone-7

在Windows Phone上,我可以WebException使用StatusCode == HttpStatusCode.NotFoundif

  1. 服务器返回404
  2. 由于连接不良,无法找到服务器.

在Windows Phone上WebException的状态适用WebExceptionStatus.UnknownError于这两种情况.

如何1从案例中判断案件2

我观察到的是连接错误(找不到服务器)ResponseUri为空并且WebResponse标题包含0项目.

编辑
ResponseUri不是空的,而是OriginalString空的

这样做是否安全:

catch (WebException ex)
{
    switch (ex.Response.StatusCode)
    {
        ...
        case HttpStatusCode.NotFound:
            if (ex.Response.ResponseUri == null
                || string.IsNullOrEmpty(httpWebResponse.ResponseUri.OriginalString))
                DoServerNotFound();
            else
                DoServerReturned404();
Run Code Online (Sandbox Code Playgroud)

小智 0

为什么不在NetworkInterface.GetIsNetworkAvailable()进行网络呼叫之前查看是否有活动的网络连接。否则,您最终会无所事事并浪费一个电话。如果存在连接但调用仍然失败,则说明这是 Web 服务的问题。

我在我的应用程序中使用它,如果没有连接,我就不会打电话。

谢谢马克斯