c# - 如何区分从服务器返回的 NotFound 和由于连接不良导致的 NotFound?

标签 c# windows-phone-7

在 Windows Phone 上,我可以使用 StatusCode == HttpStatusCode.NotFound 获取 WebException if

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

在 Windows Phone 上,对于这两种情况,WebException 的状态都是 WebExceptionStatus.UnknownError

如何区分案例 1 和案例 2

我观察到的是当连接不良时(未找到服务器)ResponseUri 为空并且 WebResponse 的 header 包含 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();

最佳答案

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

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

谢谢
最大

关于c# - 如何区分从服务器返回的 NotFound 和由于连接不良导致的 NotFound?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12951610/

相关文章:

windows-phone-7 - 在 MVVMCross 应用程序中处理异常的建议方法是什么?

windows-phone-7 - Farseer 物理引擎 3.1 with Mango

c#如何打印arraylist中字符串的字符

c# - 如何从使用 LINQ to SQL 的 c# 方法返回匿名类型

windows-phone-7 - 同时运行多个 Windows Phone 7 Emulator 实例

visual-studio-2010 - Windows Phone 7.1 - 如何在按下按钮时更改背景图像?

c# - 动态 LiveTile - 添加背景图像?

c# - 使用 C# 为表格单元格添加颜色

c# - 使用 SharePoint Lists.asmx GetListItems 按名称搜索文档

C#驱动2.0 Mongodb UpdateOneAsync