Используя 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: Интересный бит:
Если я заменил 401 на 404 следующим образом:
return new HttpNotFoundResult("User is not authenticated.");
Тогда он действительно дает 404, и jQuery может уловить проблему. Однако это не изящное решение, поскольку код ошибки отличается.
EDIT 2: 302 не подходит для меня, так как результат будет использоваться в jQuery.get().fail()
, но 302 не будет triger fail()