2015-12-09 13 views
5

In meinem Webdienst überschreibe ich den ExceptionHandler, aber mir ist nicht klar, wie Sie die Ausnahme formatieren würden, um dem OData Error-Standard zu entsprechen. Vielleicht komme ich es falsch an, da ich online keine Beispiele finde.OData WebApi 2 Fehlerbehandlung

Aus meiner Sicht gibt es mit Web API 2 ein Konzept der globalen Ausnahmebehandlung, wo Sie einen benutzerdefinierten ExceptionHandler verwenden, um alle Ausnahmen zu behandeln, die im Dienst ausgelöst werden. Von der Exception wird weiterhin erwartet, dass sie das ExceptionContext.Result mit einem neuen IHttpActionResult() aktualisiert. Wie formatieren Sie die Daten, die Sie in IHttpActionResult eingeben, um in OData Error zu formatieren.

Unten ist ein Ausschnitt des ExceptionHandler, und ich bin fest, wie Sie die context.Result mit der richtigen OData HttpResponse Nachricht überschreiben würde.

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 

    } 


} 

Jede Beratung Geschätzt, Danke, D

+0

waren Sie hierfür eine Lösung finden können? Irgendwelche Tipps werden geschätzt. Danke –

+0

Entschuldigung, ich bin nicht wieder dazu gekommen, das herauszufinden. Wenn ich das tue, werde ich das aktualisieren. – darewreck

Antwort

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