代码之家  ›  专栏  ›  技术社区  ›  bene11i

当HTTP请求失败时,将RestSharp与Xamarin-Execute()一起使用会引发异常

  •  0
  • bene11i  · 技术社区  · 10 年前

    我在运行Xamarin的项目中使用RestSharp 105.2.3.0。安卓6.0.1.10。

    一切都很好,但几天之后,如果HTTP请求没有成功,对Execute()方法的调用开始抛出异常(我想这与Xamarin平台的更新有关?)。

    例如,我收到403响应状态代码的“System.Net.WebException:The remote server returned an error:(403)Forbidden.”(系统.Net.Sockets.SocketException:远程服务器返回错误:(403:禁止)),如果主机不可访问,则收到“System.Net.Socket.SocketException:No route to host”(系统.Net.Socckets.SocketExc。

    这很奇怪,因为在这个页面上- https://github.com/restsharp/RestSharp/wiki/Recommended-Usage -我明白了:

    请注意,Execute中的异常不会引发,但在ErrorException属性中可用。

    此外,我发现 SO question 这或多或少是针对同一问题的。

    建议的解决方案是设置IgnoreResponseStatusCode属性:

    var client = new RestClient();
    client.IgnoreResponseStatusCode = true;
    

    但我在RestClient中看不到这个属性。

    我怎么能解决这个问题?当然,我可以在try..catch中包装Execute调用,但我更希望避免它,因为Execute不应该首先抛出异常。

    1 回复  |  直到 9 年前
        1
  •  0
  •   bene11i    10 年前

    我已经想通了。

    该问题与以下事实有关:在Visual Studio的“异常设置”窗口(调试->异常…)中,所有复选框都选中了“异常时中断:引发”列。

    因此,RestSharp代码捕获了异常,但VS仍在执行调用时中断执行,因为它被配置为这样做。

    截图: http://i.stack.imgur.com/a0Fc4.png