Einzelnen Beitrag anzeigen

Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#1

[IdHttpServer] Verhindern das ContentStream freigegeben wird

  Alt 17. Aug 2009, 13:17
Hallo Leute,

ich bin gerade dabei einen IdHttp Server in einem Windows Service zum laufen zu bekommen.
Dieser hat unter anderem die Aufgabe ein in einem MemoryStream gecachet Bild (wird beim Service Start geladen) über HTTP zur Verfügung zu stellen.

Dies funktioniert auch soweit ... aber nur beim ersten Mal. Beim zweiten Zugriff bekommt er eine AV.
Nach ein paar Tests stelle ich fest, dass der IdHttp meinen MemoryStream frei gibt und somit beim zweiten Mal nicht mehr darauf zugegriffen werden kann.

Meine Frage jetzt: Wie kann ich ihm sagen, dass er den Stream nicht freigeben soll. Ich will nicht, dass der Service das Bild bei jedem Request von der Festplatte laden muss.

Hier der Codeabschnitt:
Delphi-Quellcode:
  if ARequestInfo.Command = 'GETthen
  begin
    if ARequestInfo.Document = 'image.gifthen
    begin
      if MS_Image <> nil then
      begin
        AResponseInfo.ResponseNo := 200;
        AResponseInfo.ContentType := 'image/gif';
        AResponseInfo.ContentStream := MS_Image;
      end
      else
      begin
        AResponseInfo.ResponseNo := 404;
        AResponseInfo.ContentText := 'Not Found';
      end;
    end;
  end;
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat