2016-05-25 9 views
0

Wenn Ausnahme in meinem benutzerdefinierten JsonConverter geworfen wird, möchte ich die Anfrage stoppen und den Fehler an den Client zurückgeben. Das Problem ist, dass, wenn eine Ausnahme im Konverter passiert, die Controller-Methode den Parameter als null erhält und ich die Ausnahme verliere. Wie kann ich verhindern, dass die Anfrage an den Controller gesendet wird oder die aufgetretene Ausnahme von JsonConverter im Controller abgerufen wird? Oder jede andere Idee ..Owin selbst gehostete Web API Handle Ausnahme in JsonConverter

Mein Wandler ähnlich zu diesem Beitrag: How to implement custom JsonConverter in JSON.NET to deserialize a List of base class objects?

public class MyJsonConverter : JsonConverter 
{ 
protected override Person Create(Type objectType, JObject jObject) 
    { 
     Throw new Exception(); 
    } 
} 

Mein Controller:

Public class MyController : ApiController 
{ 
    Public IHttpResuls Post(Person p) 
    { 
     ... 
    } 
} 

Antwort

0

Ich habe eine Lösung. Da die HttpContext.Current in OWIN Web API null ist. Sie können dieses Paket verwenden - OwinRequestScopeContext, mit dem Sie den Kontext auch auf Anfrage verwenden können.

zum Beispiel setzen Sie den Fehler in dem JsonConverter:

OwinRequestScopeContext.Current.Items["error"] = exception; 

Und dann den Fehler in Ihrem Controller erhalten:

var ex = OwinRequestScopeContext.Current.Items["error"] as Exception; 
Verwandte Themen