Ausgabe der OData-Antwort messen

8

Ich habe eine Website basierend auf MVC mit einer Seite, die OData-formatierte Ergebnisse liefern soll, während ich auch protokolliere, wie viele Bytes gesendet wurden, die jeden Datensatz im Ergebnis repräsentieren. Ich erhalte die Ergebnisse aus der Datenbank mit diesem Code:

%Vor%

Ich habe versucht, mit

an den OData-Formatierer anzuhängen %Vor%

wo

%Vor%

Ich dachte, ich könnte die Länge der Ausgabe ermitteln, die vom Aufruf WriteObjectInline generiert wurde, kann aber nicht herausfinden, wie das geht.

Ich habe auch eine andere Lösung versucht, mit

%Vor%

süchtig nach

%Vor%

Aber hier scheint der Haken nicht zu funktionieren: Ich setze Haltepunkte für alle Methoden, die in MeasuringJsonFormatter definiert sind, und keine wurden getroffen.

Kann mir jemand eine Anweisung geben, wo ich hinschauen soll?

Ich verwende C # mit Visual Studio 2010, MS ASP.NET MVC 5.2.3, MS ASP.NET Web API 2.2 für OData v4

    
LiborV 20.07.2016, 15:33
quelle

1 Antwort

4

Ich bin mir nicht sicher, aber wenn Sie Ihre eigene Version von ODataWriter implementieren, können Sie nach der Länge des Eintrags suchen. Schauen Sie sich dieses Beispiel an: Ссылка von benutzerdefinierter ODataWriter Im CsvOutputContext hast du

%Vor%

Ich denke, Sie können this.stream.Length vor Flush überprüfen, aber ich habe es nicht getestet.

BEARBEITEN

Wenn Sie Daten hinzufügen oder ändern möchten, wie der Serializer Ihre Daten speichert, müssen Sie WriteStart in Ihrem benutzerdefinierten ODataWriter wie folgt überschreiben:

%Vor% Mit

this.context.Writer.Write können Sie beliebige Daten hinzufügen. Sehen Sie sich den Beispiellink an, den ich bereitgestellt habe.

EDIT2

Um Binärdaten wie JPG-Dateien zu speichern, müssen Sie sie serialisieren. Schau dir das an:

%Vor%     
Lesmian 09.09.2016 08:30
quelle

Tags und Links