Microsoft ASP.NET Web API を使用して RESTful サービスを構築しています。
私の問題は、何か問題が発生したときに Web API がユーザーに返す HttpErrors に関するものです (例: 400 Bad Request または 404 Not Found)。
問題は、応答コンテンツでシリアル化された HttpError を取得したくないということです。これは、提供される情報が多すぎる場合があるため、OWASP セキュリティ ルールに違反するためです。次に例を示します。
リクエスト:
http://localhost/Service/api/something/555555555555555555555555555555555555555555555555555555555555555555555
応答として、もちろん 400 を取得しますが、次のコンテンツ情報が含まれます。
{
"$id": "1",
"Message": "The request is invalid.",
"MessageDetail": "The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'MyNamespaceAndMethodHere(Int32)' in 'Service.Controllers.MyController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter."
}
このようなものは、私の WebService が ASP.NET WebAPI テクノロジに基づいていることを示すだけでなく (それほど悪くはありません)、名前空間、メソッド名、パラメーターなどに関する情報も提供します。
Global.asax に IncludeErrorDetailPolicy を設定しようとしました
GlobalConfiguration.Configuration.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Never;
ええ、それは何とかうまくいきました。結果には MessageDetail セクションが含まれていませんが、それでも、この HttpError をまったく取得したくありません。
カスタムの DelegatingHandler も作成しましたが、コントローラーで生成した 400 と 404 にも影響します。
私の質問は次のとおりです。応答コンテンツからシリアライズされた HttpError を取り除く便利な方法はありますか? ユーザーが悪い要求に対して返してほしいのは、応答コードだけです。