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
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.
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.
Um Binärdaten wie JPG-Dateien zu speichern, müssen Sie sie serialisieren. Schau dir das an:
%Vor%Tags und Links asp.net-mvc c# asp.net odata