2017-08-23 4 views
1

Ich benutze die JsonConvert.SerializeObject in einem benutzerdefinierten ActionFilterAttribute.
Innerhalb der OnActionExecuting Serialisierung der filterContext.ActionParameters für die Protokollierung Zweck.
Das Problem ist, dass einige der Aktionen Dateien empfangen (System.Web.HttpPostedFileWrapper) über eine <from/> mit enctype="multipart/form-data" so bin ich den Fehler bekommenJsonConvert SerializeObject ignore files/stream/System.Web.HttpPostedFileWrapper

Timeouts nicht auf diesen Stream unterstützt.

Was ich tun möchte, ist diese Art von Objekt zu ignorieren, die nicht serialisieren kann und konnte durch Fehler.
Ich fand heraus, dass ich classProperties mit [JsonIgnore] oder [ScriptIgnore] Attribute ignorieren kann, aber ich bin auf der Suche nach einer allgemeineren Lösung, weil ich diese Attribute nicht überall platzieren möchte.
Ich habe auch versucht, die JsonSerializerSettings Objekt zu recherchieren, aber nicht etwas relevantes zu meinem Fall gefunden.

Antwort

0

Sie können diese Parameter einfach filtern. some wie:

var ToBeSerialized = filterContext.ActionParameters.Where(a=>a.Value.GetType()!=typeof(TheTypeYouWantToAvoid)); 

string result = JsonConvert.SerializeObject(ToBeSerialized); 
+0

Ok, netter Ansatz, müssen Sie Ihre Antwort beheben, obwohl dazu: '.Where (a => a.Value.GetType() = typeof ...', weil wir überprüfen müssen der "Wert" jedes Parameters der Aktion. (Das 'a' ist in diesem Fall immer ein '' Mitglied eines Wörterbuchs) –

+0

@ Sag1v Ich wusste das nicht. Ich habe meinen Code nicht getestet. Ich war Ich gebe Ihnen einen Hinweis darauf, wie es geht, und vielen Dank für die Korrektur meines Fehlers –

Verwandte Themen