4

ASP.NET Web API (ASP.NET MVC 4 に含まれています) を使用して RESTful API を実装しました。

クライアントがサポートされていない Content-Type (「text/plain」など) でサービスを要求すると、次の例外が発生します。

System.InvalidOperationException: メディア タイプ 'text/plain' のコンテンツからタイプ [...] のオブジェクトを読み取るために使用できる MediaTypeFormatter がありません。

私のサービスは HTTP ステータス コード 500 を返し、エラーがログに記録/報告されます (私は ELMAH を使用しています)。

残念ながら、この種のサポートされていないクライアント リクエストを「キャッチ」する簡単な方法が見つかりません。IMHO、サービスは 404 (見つかりません) または 400 (不正な要求) のようなステータス コードを返す必要があります。これは、エラーがサーバー エラーではない (クライアント側のエラー) ためです。

別の SO の質問で、この回答を見つけました。要求にサポートされていないコンテンツ タイプがある場合、ASP.NET Web API サービスによって返されるステータス コードを構成するにはどうすればよいですか? これは、カスタム DelegatingHandler を実装することによって可能な解決策を示しています。

だから私の質問は:私は何かが恋しいですか?この問題を対象とする ASP.NET Web API の組み込み機能はありますか?

4

2 に答える 2

0

独自のカスタム DelegatingHandler を使用することも、IHttpModule を実装して現在の http 要求をチェックして要求を検証するカスタム HttpModule を作成することもできます。

于 2013-08-30T06:06:51.020 に答える