次のようなエラー メッセージに対する Web Api の既定の動作を変更する方法はありますか。
GET /trips/abc
(言い換え)で応答します:
HTTP 500 Bad Request
{
"Message": "The request is invalid.",
"MessageDetail": "The parameters dictionary contains a null entry for parameter 'tripId' of non-nullable type 'System.Guid' for method 'System.Net.Http.HttpResponseMessage GetTrip(System.Guid)' in 'Controllers.TripController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter."
}
私のコードに関するこのかなり詳細な情報を提供することは避け、代わりに次のようなものに置き換えたいと思います。
HTTP 500 Bad Request
{
error: true,
error_message: "invalid parameter"
}
UserController 内でこれを行うことはできますが、コードの実行はそれほど進んでいません。
編集:
Global.asax.cs の次のコード行を使用して、出力から詳細なエラー メッセージを削除する方法を見つけました。
GlobalConfiguration.Configuration.IncludeErrorDetailPolicy =
IncludeErrorDetailPolicy.LocalOnly;
これにより、次のようなメッセージが生成されます。
{
"Message": "The request is invalid."
}
これは良いことですが、私が望んでいるものとはまったく異なります - クライアント側の詳細なエラー メッセージにマップされる、多数の数値エラー コードを指定しました。適切なエラーコードのみを出力したいと思います(出力の前に、できれば発生した例外の種類を確認することで選択できます)。次に例を示します。
{ error: true, error_code: 51 }