2015-12-09 34 views
5

Nel mio servizio Web, ho eseguito l'override di ExceptionHandler, ma non mi è chiaro come formattare l'eccezione per adattarla allo standard OData Error. Forse mi sto avvicinando male visto che non riesco a trovare alcun esempio online.OData WebApi 2 Gestione degli errori

Dalla mia comprensione, con web api 2 esiste un concetto di gestione globale delle eccezioni in cui si utilizza un ExceptionHandler personalizzato per gestire le eccezioni generate nel servizio. Si prevede comunque che l'eccezione aggiorni ExceptionContext.Result con un nuovo IHttpActionResult(). Come si formattano i dati immessi in IHttpActionResult per formattare su Errore OData.

Di seguito è riportato un frammento di ExceptionHandler e sono bloccato su come si sovrascriverà il contesto. Risolvi il messaggio OData HttpResponse corretto.

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 

    } 


} 

Qualche consiglio apprezzato, Grazie, D

+0

sono stati in grado di trovare una soluzione per questo? Qualsiasi consiglio è apprezzato. Grazie –

+0

scusa, non sono tornato a capirlo. Quando lo faccio, aggiornerò questo. – darewreck

risposta

0
context.Result = new System.Web.Http.Results.ResponseMessageResult(msg);