Wann kann ich eine Datei löschen, nachdem ich sie in Response.WriteFile () verwendet habe?

8

Ist der WriteFile-Aufruf richtig synchron und kann ich die Datei löschen, die unmittelbar nach dem Aufruf geschrieben wurde?

    
ProfK 14.10.2008, 12:13
quelle

5 Antworten

3

Es ist völlig synchron, wie Sie sehen können, wenn Sie die Implementierung von HttpResponse.WriteFile mit Lutz Reflector betrachten. Sie können die Datei sofort nach dem Aufruf von Response.WriteFile löschen.

Sie haben nicht die Garantie, dass der Antwortstream vollständig an den Client übertragen wurde, aber der Aufruf von Response.Flush gibt Ihnen auch keine Garantie. Daher muss ich Response.Flush nicht vor dem Löschen der Datei aufrufen.

Vermeiden Sie es, die Datei in MemoryStream zu laden, das bringt Ihnen keinen Vorteil und verursacht Kosten für die Speichernutzung, insbesondere bei großen Dateien.

    
Joe 13.11.2009, 07:13
quelle
9

Wenn Sie eine Datei mit Response.WriteFile() auf den Client schreiben, wird durch einen Aufruf von Response.Flush() sichergestellt, dass sie vollständig an den Client ausgegeben wurde. Sobald dies erledigt ist, können Sie es vom Webserver löschen.

Sie sollten ein robusteres System entwickeln, wenn die Datei geschäftskritisch ist. Angenommen, ein clientseitiges Skript überprüft, ob die Datei erfolgreich empfangen wurde, und warnt den Webserver, dass die Datei gelöscht werden kann.

    
Keith Twombley 14.10.2008 13:14
quelle
5

Das ist die Lösung, nach der Verwendung der Syntax Response.WriteFile(fileName); , geben Sie die folgenden Codezeilen ein:

%Vor%     
ypicasso 12.11.2009 23:02
quelle
0

Wenn der Speicher bedient wird, ist er synchron, wie auch der Rest der RESPONSE-Befehle.

    
Stephen Wrighton 14.10.2008 13:11
quelle
0

Übertragungsdatei

Sie können TransmitFile auch aufrufen, damit IIS sich darum kümmert. Es wird tatsächlich von IIS außerhalb Ihrer Arbeitsprozesse gesendet.

Speicherstream

Wenn Sie wirklich paranoid sind, senden Sie die Datei nicht. Laden Sie es in einen Speicher-Stream (wenn die Größe vernünftig ist) und übertragen Sie das. Dann können Sie die Datei jederzeit löschen. Die Datei auf der Festplatte wird niemals von IIS berührt.

    
Jason Short 14.10.2008 13:16
quelle

Tags und Links