Wenn Sie eine hochgeladene Datei in ASP.NET erhalten, tun Sie dies in der Regel über ein HttpPostedFile
Objekt. Die empfangenen Daten werden über HttpPostedFile.InputStream
zur Verfügung gestellt. Dies ist eine Eigenschaft, die zu der Annahme führen kann, dass ich sie nicht selbst entsorgen muss. In der Dokumentation wird jedoch nicht erwähnt, wer für die Entsorgung des Streams zuständig ist. Wenn dies durch das ASP.NET-Framework geschieht, geben Sie als an es tut es (sagen wir, kann ich den Stream in der Sitzung speichern, sollte ich es wünschen?).Wer ist verantwortlich für die Entsorgung von HttpPostedFile.InputStream - und wann?
Jetzt bekomme ich nicht so viele Dateien, und ich habe keine Probleme für die Entsorgung dieses bestimmten Streams, aber für die Sauberkeit - weiß jemand, was der Design-Vertrag hier ist?
Zugegeben, das Speichern der Sache in der Sitzung klingt wie eine schlechte Idee; Ich habe lediglich versucht, ein Beispiel zu finden, wo es relevant wäre, die genaue Lebensdauer des Stroms zu kennen. Vielleicht wäre ein besseres Beispiel, einen Hintergrundarbeiter zu starten, um das Bild zu verarbeiten und zu speichern und mit dem Webrequest im Vordergrund fortzufahren - die Webanfrage könnte vor dem Worker abgeschlossen sein, also müssten Sie wissen, wann der Stream genau ungültig wird. In jedem Fall, ich nehme an, Sie haben Recht - obwohl ich bessere Dokumente von Microsoft geschätzt hätte (wie bei so vielen IDisposable-Problemen). –
Auch wenn Sie es an einen Hintergrundprozess übergeben möchten ... was großartig ist ... Ich würde die Datei immer noch im Dateisystem speichern und einen Verweis auf die Datei an Ihren Hintergrund-Thread übergeben, anstatt die Instanz zu übergeben des Stroms. –
Angesichts der Tatsache, dass der InputStream außerhalb meiner Kontrolle geschlossen ist, werde ich sicherlich so etwas tun - aber im Allgemeinen, um Engpässe zu vermeiden, bevorzuge ich temporäre Festplattenzugriffe zu vermeiden - und ein temporäres, wenn auch großes Byte-Array ist kein Problem. Danke für die Info, jedenfalls! –