使用 ASP.NET MVC 5,我想为不同的场景返回适当的 HTTP 状态代码(401 表示用户未通过身份验证,403 表示用户无权访问某些资源等),而不是在 jQuery 中处理它们。
但问题是,当我尝试返回 401 时,它总是返回“302:找到”。自定义状态码的诀窍是什么,为什么这不起作用?
public ActionResult My()
{
if (User.Identity.IsAuthenticated == false)
{
return new HttpStatusCodeResult(401, "User is not authenticated.");
// Returns "302: Found"
}
// ... other code ...
}
编辑1:有趣的一点:
如果我用这样的 404 替换 401:
return new HttpNotFoundResult("User is not authenticated.");
然后它确实给出了 404 并且 jQuery 可以解决这个问题。然而,这不是一个优雅的解决方案,因为错误代码是不同的。
编辑 2: 302 对我不利,因为结果将用于jQuery.get().fail()
,但 302 不会触发fail()