![]() |
[IdHttpServer] Verhindern das ContentStream freigegeben wird
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 = 'GET' then
begin if ARequestInfo.Document = 'image.gif' then 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; |
Re: [IdHttpServer] Verhindern das ContentStream freigegeben
Hi,
Zitat:
Edit: Blödsinn geschrieben... Gruß Assertor |
Re: [IdHttpServer] Verhindern das ContentStream freigegeben
Also das Assign nicht geht hast du eh schon bemerkt :zwinker:
Deine nachbesserung funktioniert auch noch nicht ganz hat mich aber auf den richtigen Weg gebraucht:
Delphi-Quellcode:
So funktioniert es. Danke :thumb:
if MS_Image <> nil then
begin AResponseInfo.ResponseNo := 200; AResponseInfo.ContentType := 'image/gif'; AResponseInfo.ContentStream := TMemoryStream.Create; MS_Image.Position := 0; AResponseInfo.ContentStream.CopyFrom(MS_Image, MS_Image.Size); end else begin AResponseInfo.ResponseNo := 404; AResponseInfo.ContentText := 'Not Found'; end; |
Re: [IdHttpServer] Verhindern das ContentStream freigegeben
Hi Alex,
Zitat:
Freut mich aber, daß es jetzt geht :) Gruß Assertor |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:42 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz