6

私の 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

4

1 に答える 1