2016-08-09 4 views
2

Wir verwenden Web-API 2 und um die Ausnahme zu behandeln, haben wir ein benutzerdefiniertes Attribut erstellt, indem wir das ExceptionFilterAttribute geerbt haben. Jetzt möchten wir die Protokolle der JSON-Anfrage im Ausnahmefall in der Datenbank speichern.So lesen Sie den JSON-Body in HttpActionExecutedContext im Ausnahmefall

Ich habe versucht, mit context.Request.Content.ReadAsStringAsync(). Ergebnis, aber seine leere Zeichenfolge zurück zu lesen.

Bitte helfen Sie !!

Antwort

0

Sie können Anfrage Stromposition zurückgesetzt und wieder gelesen es:

class CustomExceptionFilterAttribute : ExceptionFilterAttribute 
{ 
    public override async Task OnExceptionAsync(HttpActionExecutedContext context, CancellationToken cancellationToken) 
    { 
     var stream = await context.Request.Content.ReadAsStreamAsync(); 
     stream.Position = 0; 
     using (var reader = new StreamReader(stream)) 
     { 
      var requestString = reader.ReadToEnd(); 
     } 
    } 
} 
+0

Vielen Dank für die Beantwortung meiner Frage und die Lösung, die aber, wenn ich verwende OnException Methode dann, warum ich bin nicht in der Lage die Anfrage Körper zu lesen. Bitte vorschlagen. – ChupChapCharli

+1

Da der Anfragestream bereits vom Framework analysiert und gelesen wurde. Sie können den gleichen Trick wie beim Suchen des Streams zum Anfang verwenden. –

Verwandte Themen