ASP.NET Web API: 401/不正な応答を返す正しい方法 質問する

ASP.NET Web API: 401/不正な応答を返す正しい方法 質問する

OAuth/トークン認証を使用してリクエストを認証する MVC WebAPI サイトがあります。関連するすべてのコントローラーに適切な属性があり、認証は正常に機能しています。

問題は、すべてのリクエストが属性の範囲内で承認されるわけではないことです。一部の承認チェックは、コントローラー メソッドによって呼び出されるコードで実行する必要があります。この場合、401 の未承認応答を返す正しい方法は何ですか?

試してみましたthrow new HttpException(401, "Unauthorized access");が、これを実行すると応答ステータス コードは 500 になり、スタック トレースも取得されます。ログ記録 DelegatingHandler でも、応答が 401 ではなく 500 であることがわかります。

ベストアンサー1

あなたは投げるべきですHttpResponseExceptionAPIメソッドからではなくHttpException:

throw new HttpResponseException(HttpStatusCode.Unauthorized);

または、カスタム メッセージを指定する場合:

var msg = new HttpResponseMessage(HttpStatusCode.Unauthorized) { ReasonPhrase = "Oops!!!" };
throw new HttpResponseException(msg);

おすすめ記事