我正在开发一个小的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;
}
}
答案 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);