Почему мой контроллер WebApi2 перенаправляет меня на страницу входа, когда я возвращаю Unauthorized()? То же самое происходит, когда я использую атрибут [Авторизовать]. Разве контроллер не должен возвращать результат Json или XML, как запрошено в Content-Type? Перенаправление меня на страницу входа — пустая трата ресурсов и совершенно бесполезно для клиента приложения.
Я посмотрел в Интернете. Кажется, модуль аутентификации форм захватывает мой ответ 401 и преобразует его в 302. Это странно, потому что мой режим аутентификации «нет» (не формы). Более того, я читал, что эта «функция» была исправлена в .Net 4.5 (которую я использую).
Я попытался переопределить свой Application_EndRequest в моем Global.asax.cs
protected void Application_EndRequest()
{
var context = new HttpContextWrapper(Context);
// If we're an ajax request, and doing a 302, then we actually need to do a 401
if (Context.Response.StatusCode == 302 && context.Request.ContentType.StartsWith("application"))
{
Context.Response.Clear();
Context.Response.ClearContent();
Context.Response.StatusCode = 401;
context.Response.RedirectLocation = null;
Context.Response.End();
}
}
Это не сработало (вернуло HTML-страницу IIS). Какой следующий шаг ?