我正在开发一个与 asp.net Web API(我创建的)一起工作的小型 Xamarin 表单应用程序。
我想要实现的是检查 API 是否在线/正在运行(只是一些错误处理)。我所做的是在 API 中添加了一个测试控制器,当请求返回 true 时。如果 API 在线,我得到 true 并且它可以工作,当它离线时,我尝试将结果转换为 bool 需要很长时间(+20 秒)才能进入 catch 块,此时我的应用程序挂起.
请告知该怎么做,或者是否有更好的方法来处理这个问题,因为我对这两者都是新手(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;
}
}
https://msdn.microsoft.com/en-us/library/system.net.http.httpclient.timeout(v=vs.110).aspx
HttpClient
有一个Timeout
属性,默认为 100 秒。降低此值将导致请求超时并更快地抛出异常。
_client.Timeout = TimeSpan.FromSeconds(5);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句