【发布时间】:2013-09-10 20:57:11
【问题描述】:
使用 ASP.NET MVC 5,我想为不同的场景返回适当的 HTTP 状态代码(401 表示用户未通过身份验证,403 表示用户无权访问某些资源等),而不是在 jQuery 中处理它们。
但问题是,当我尝试返回 401 时,它总是返回“302: Found”。自定义状态码的诀窍是什么,为什么这不起作用?
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()
【问题讨论】:
-
你在使用表单认证吗?
-
mrtig:我以前见过这个,但没有帮助,因为它说它是通过使用 IIS express 解决的。我用的是 IIS express,还是有问题。
-
Daniel A. White:我在 ASP.NET MVC5 模板中使用名为“个人用户帐户”的默认内置身份验证
标签: c# asp.net asp.net-mvc http-status-codes asp.net-mvc-5