HttpClient结果转换超时

时间:2017-11-04 12:55:16

标签: c# asp.net-web-api xamarin.forms

我正在开发一个小的Xamarin表单应用程序,它与asp.net web API(我创建的)一起使用。

我想要实现的是检查API是否在线/正在运行(只是一些错误处理)。我所做的是在API中添加一个测试控制器,当请求返回true时。如果API在线,我会认为它是有效的,当它处于脱机状态并且我尝试将结果转换为bool时,在进入catch块之前需要很长时间(+20秒),并且在此期间我的申请挂了。

请告知建议做什么或者是否有更好的方法处理这个问题,因为我不熟悉两者(Xamarin表格和API')

public static bool testConnection()
{
    HttpClient _client = new HttpClient();
    try
    {
        var content = _client.GetStringAsync(apiUrl + "/api/Test");//url Path
        bool ConnectionStatus = Convert.ToBoolean(content.Result);//This line takes very long before jumping to catch block
        if (ConnectionStatus)
        {
            return true;
        }
    }
    catch (Exception e)
    {
        return false;
    }
}

1 个答案:

答案 0 :(得分:0)

https://msdn.microsoft.com/en-us/library/system.net.http.httpclient.timeout(v=vs.110).aspx

HttpClient具有Timeout属性,默认为100秒。降低此值将导致请求超时并更快地抛出异常。

_client.Timeout = TimeSpan.FromSeconds(5);