Speicherverbrauch beim Erstellen und Herunterladen von Zip-Archiv als HttpContent

9

Ich habe eine web api GET-Methode, die eine ZIP-Datei zum Herunterladen zurückgibt. Hier ist der Code, der das Zip-Archiv erstellt:

%Vor%

Und so wird die Antwort ausgefüllt:

%Vor%

Der obige Code funktioniert gut, das Problem ist, dass er viel Speicher auf dem Server verbraucht, natürlich abhängig von der Dateigröße. Ich habe versucht, das Ergebnis in StreamContent zu ändern, aber das hat nicht funktioniert, da die Antwort nur Header zurückgegeben hat und schließlich abgelaufen ist.

Hier sind meine Fragen:

  1. Gibt es eine Möglichkeit, das Laden aller Dateien im Speicher zu vermeiden und stattdessen die ZIP-Datei zu senden, wenn sie erstellt wird?
  2. Verwenden Sie StreamContent besser in diesem Szenario und wenn ja, was muss ich ändern, damit es funktioniert?
  3. Wie wirkt sich die Pufferung auf den Speicherverbrauch aus? Ich habe versucht, die Pufferung zu deaktivieren, indem ich eine benutzerdefinierte IHostBufferPolicySelector wie vorgeschlagen implementiere. api / "> in diesem Artikel , aber es scheint keine Wirkung zu haben.
  4. Die API-Aktion kann derzeit aufgerufen werden, indem ein Link mithilfe von HttpClient oder einer AJAX-Anforderung navigiert wird. Daher muss jede Lösung alle Szenarien unterstützen.
elolos 21.04.2015, 14:40
quelle

1 Antwort

3

Angepasst an das Projekt Kudu , eine Methode, die verwendet PushStreamContent in Kombination mit einem spezifischen DelegatingStream wrapper zum Streamen eines Zip-Archivs:

%Vor%

Was für Ihren Fall könnten Sie verwenden wie:

%Vor%     
Alex 21.04.2015, 15:05
quelle

Tags und Links