当我返回 Unauthorized() 时,为什么我的 WebApi2 控制器将我重定向到登录页面?当我使用 [Authorize] 属性时也会发生同样的情况。控制器不应该按照 Content-Type 的要求返回 Json 或 XML 结果吗?将我重定向到登录页面是一种资源浪费,对应用程序客户端完全没有用处。
我环顾了网络似乎表单身份验证模块正在获取我的 401 响应并将其转换为 302。这很奇怪,因为我的身份验证模式是“无”(不是表单)。此外,我已经读到这个“功能”已经在.Net 4.5(我正在运行)中得到修复。
我尝试在 Global.asax.cs 中覆盖我的 Application_EndRequest
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 页面)。你下一步怎么做 ?