Unauthorized() を返すと、WebApi2 コントローラーがログイン ページにリダイレクトするのはなぜですか? [Authorize] 属性を使用すると、同じことが起こります。コントローラーは、 Content-Type で要求された Json または XML の結果を返すべきではありませんか? ログイン ページにリダイレクトすることはリソースの浪費であり、アプリケーション クライアントにとってはまったく役に立ちません。
Web を見回したところ、フォーム認証モジュールが 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 ページが返されました)。次のステップは何ですか ?