Delphi Datasnap Server Memory Leak mit TFileStream als Rückgabewert

Ich benötige eine Funktion in einem Datasnap-Server, der eine .zip-Datei zurückgibt. Also habe ich angefangen mit:

function TGetData.getZip (): TFileStream;
begin
   result := TFileStream.Create('test.zip', fmOpenRead and fmShareDenyWrite);
end

Dies funktioniert gut, aber datasnap gibt es nicht frei, so dass ich einen Speicherleckfehler erhalte.

Nächster Versuch: Ich habe bei "TWebModule1.WebModuleAfterDispatch" angefangen. Ich dachte, es könnte helfen, meine Antwort mit "response.SendResponse;" zu senden. und befreie meinen Stream alleine. Also hier eine kurze Version:

procedure TWebModule1.WebModuleAfterDispatch(Sender: TObject;
  Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
var
   test : TFileStream;
begin
   response.ContentType := 'application/x-zip-compressed';
   test := TFileStream.Create('test.zip', fmOpenRead);
   response.ContentStream := test;
   response.CustomHeaders.Values['Content-Disposition'] := 'attachment; filename=test12.zip';
   response.SendResponse; //Also sendStream didn't help
   test.Free;
end;

Dies ist fast die Lösung, aber der datasnap-Server sendet HTML-Code, nachdem mein Stream gesendet wurde, und dieser wird am Ende der Datei geschrieben.

Ich weiß, der datasnap-Server unterstützt TFileStream nicht. Stattdessen sollte ich TDBXStreamValue verwenden, aber es scheint kein funktionierendes Beispiel zu geben ...

Hat jemand Erfahrung mit einem solchen Problem?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage