Microsoft ASP.NET Web APIを使用してRESTfulなサービスを構築しています。応答からHttpErrorを削除するASP.NET Web API
私の問題は、何か問題が起こったときにWeb APIがユーザーに返すHttpErrors(400 Bad Requestや404 Not Foundなど)です。
要求::
http://localhost/Service/api/something/555555555555555555555555555555555555555555555555555555555555555555555
問題は、私はそれゆえ、それは例えば、OWASPセキュリティ規則に違反し、それは時々あまりにも多くの情報を提供して、応答内容で連載HttpErrorを取得する必要はありませんということであり、応答として
、私はもちろんの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."
}
このような何かが私のWebServicことを示しているだけでなく、 eは
は私がGlobal.asaxの
にIncludeErrorDetailPolicyを設定しようとしました(つまり悪いわけではない)ASP.NET WebAPIの技術に基づいて、だけでなく、それは私の名前空間に関するいくつかの情報を提供し、メソッド名、パラメータなどされますGlobalConfiguration.Configuration.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Never;
ええ、これでいい結果でしたが、MessageDetailセクションは含まれていませんが、このHttpErrorを取得したくありません。
カスタムDelegatingHandlerも作成しましたが、私自身がコントローラで生成する400sと404sにも影響しますが、これは発生したくありません。
私の質問は次のとおりです。 応答コンテンツからシリアル化されたHttpErrorを除去するための便利な方法はありますか?ユーザーが悪い要求で返信してほしいのは、レスポンスコードだけです。
私のアプリケーションでは、自分のHttpResponseMessagesを返します。たとえば、誰かが自分のデータベースに新しいレコードを挿入したい場合、コントローラのPostNewRecordメソッドを使用するとします。彼が挿入するレコードは検証によって渡されます。フィールドがないと検出された場合、コントローラはBad Requestを返します。あなたのソリューションでは、MyApiControllerActionInvokerがその応答を傍受し、自分のメッセージを削除します。これは発生したくありません。 Web APIで生成されたメッセージを削除するだけです。リンクされた記事の場合は –
+1グッドリード:ヘッダー –