Почему мой контроллер WebApi2 перенаправляет меня на страницу входа, когда я возвращаю Unauthorized()? То же самое происходит, когда я использую атрибут [Авторизовать]. Должен ли контроллер возвращать Json или результат XML в соответствии с запросом в Content-Type? Перенаправление меня на страницу входа - это трата ресурсов и совершенно бесполезная для клиента приложения.ASP.NET MVC5 WebAPI2 Предотвращение несанкционированного перенаправления на страницу входа
Ive огляделся по сторонам. Кажется, что модуль аутентификации форм захватывает мой ответ 401 и преобразует его в 302. Это странно, потому что мой режим аутентификации «none» (а не формы). Более того, я прочитал, что эта функция была исправлена в .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();
}
}
Это не очень хорошо работает (возвратил страницу IIS Html). Каким будет следующий шаг ?
возможно дубликат [Owin: несанкционированный WebAPI вызов возвращение Логин страницы, а не 401] (http://stackoverflow.com/questions/20149750/owin-unauthorised -webapi-call-returns-login-page-rather-than-401) – angularsen