我有一个MVC 4应用程序。当我发出ajax请求并且服务器超时时,它会在客户端上抛出异常:
无法加载资源:服务器响应状态为500 (内部服务器错误)
所以我的问题是
a)为什么不扔401?
b)如果检查状态代码500以检查会话是否超时,是否合适?这是一个有效的条件吗?
答案 0 :(得分:0)
首先,您可以在msdn中查看有关状态代码的文章: https://msdn.microsoft.com/en-us/library/aa287675(v=vs.71).aspx
a)它没有返回未经授权的(401)状态代码,因为它的内部服务器错误 - 服务器没有响应,它没有授权失败
HTTP错误500内部服务器错误 - 意味着服务器上出现了错误,因此其响应正确,您可以看到以下文章:http://www.checkupdown.com/status/E500.html
b)您可以使用动作过滤器或全局处理程序编写适当的授权失败/会话超时处理,不需要检查状态代码500,这样包装这种情况是错误的。对于会话过期处理,您可以查看这篇文章: http://forums.asp.net/t/1523066.aspx?Redirect+to+Login+after+Session+is+Expired+in+MVC