私の Web サービスでは、ExceptionHandler をオーバーライドしますが、OData エラー標準に適合するように例外をフォーマットする方法が明確ではありません。オンラインで例が見つからないため、おそらく私は間違った方法でアプローチしています。
私の理解では、web api 2 には、カスタム ExceptionHandler を使用してサービスでスローされた例外を処理するグローバル例外処理の概念があります。例外は、新しい IHttpActionResult() で ExceptionContext.Result を更新することが引き続き期待されます。IHttpActionResult に入力したデータをどのようにフォーマットして、OData エラーにフォーマットしますか。
以下は ExceptionHandler のスニペットです。正しい OData HttpResponse メッセージで context.Result をオーバーライドする方法に行き詰まっています。
public class CustomExceptionHandler: ExceptionHandler
{
public override void Handle(ExceptionHandlerContext context)
{
HttpResponseMessage msg = context.Request.CreateErrorResponse(HttpStatusCode.NotFound, new ODataError
{
ErrorCode = context.Exception.Message,
Message = context.Exception.InnerException.Message,
InnerError = new ODataInnerError
{
Message = context.Exception.InnerException.Message
}
});
context.Result = //How do you wrap the OData HttpResponseMessage into a IHttpActionResult
}
}
アドバイスありがとうございます、ありがとう、D