WebApi Catch连接超时错误
WebApi Catch Connection Timeout Error
我有一个连接到WebApi 2.0的C#项目。
现在,该应用程序将在使用3G数据连接的平板电脑上使用。
我想捕捉并输出一条友好的消息,通知他们应用程序无法联系服务器,请确保他们有3g连接。
请问最好的方法是什么?
通常,加载视图的调用是使用javascript post进行的;
$.post('@Url.Action("Action", "Controller")',
我在失败事件中捕捉到的;
.fail(function (xhr, textStatus, errorThrown) {
// if connection issue then display an error message
})
我还不得不"隐藏"webapi端点,以阻止url黑客等暴露它。因此,实际上调用的是应用程序mvc控制器操作,在此之前调用api方法。
我发现这里有以下错误;
catch (HttpResponseException ex)
{
var msg = ex.Response.Content.ReadAsStringAsync().Result;
var errorModel = JsonConvert.DeserializeObject<AcknowledgementModel>(msg);
return new HttpStatusCodeResult(500, errorModel.errormessage);
}
catch (Exception ex)
{
return new HttpStatusCodeResult(500, ex.Message);
}
其中AcknowledgeModel
是一个异常过滤器,它将错误封装在其指定的模型中。
超时是客户端错误。服务器永远不会告诉您连接超时——您将得到响应或请求实际超时。
因此,解决方案是使用客户端处理程序
对于jQueryAJAX,您可以使用.fail()
来处理它
根据jQuery AJAX文档:
第二个参数(除了null)的可能值为"timeout"、"error"、"notmodified"answers"parserror"。
所以,你可以很容易地这样做:
$.ajax({
url: 'example.com',
data: { }
}).done(function(r) {
}).fail(function(xhr, t, err) {
if (t === "timeout") {
alert("The connection has timed out. Please, check data connection availability");
} else {
alert("Unknown server error. We are sorry!");
}
});
相关文章:
- Cordova网络视图超时错误
- wkhtmltopdf超时错误
- 导致ajax调用超时错误的原因
- RecordRTC视频上传AmazonS3超时错误
- 茉莉花超时错误
- 具有超时的地理位置会导致错误处理程序被调用两次
- 需要模块的JS加载超时:错误详细信息
- 使用超级测试避免 Mocha 因断言错误而超时
- 量角器根据条件单击嵌套元素,错误 - 在指定的超时内未调用异步回调
- 错误:超时超过 2000 毫秒.带有承诺的单元测试
- JavaScript WebRTC 对等超时/错误
- 如何在角度 js $http调用中显示超时错误
- 节点.js npm 安装错误连接超时
- 如何处理requireJs超时错误
- 由于回调结构中可能存在错误,无法使超时工作
- 按钮,超时,警报未捕获类型错误:
- 如何从客户端解决会话超时错误
- 如何解决“;连接超时”;错误
- Javascript:如何检测facebook连接超时错误
- 未处理的拒绝错误:超时:没有加载此页面上的所有资源