Was ist der beste Weg zum Streamen von Dateien mit ASP.NET?Die beste Methode zum Streamen von Dateien in ASP.NET
Es scheint verschiedene Methoden dafür zu geben, und ich verwende derzeit die Response.TransmitFile() Methode in einem http-Handler, der die Datei direkt an den Browser sendet. Dies wird für verschiedene Zwecke verwendet, einschließlich des Sendens von FLVs von außerhalb der Webroot an einen eingebetteten Flash-Videoplayer.
Dies scheint jedoch keine zuverlässige Methode zu sein. Insbesondere gibt es ein seltsames Problem mit Internet Explorer (7), wo der Browser nur hängt, nachdem ein oder zwei Videos angesehen werden. Das Klicken auf irgendwelche Links usw. hat keine Wirkung, und die einzige Möglichkeit, Dinge wieder zum Laufen zu bringen, besteht darin, den Browser zu schließen und wieder zu öffnen.
Dies tritt auch in anderen Browsern auf, aber viel seltener. Basierend auf einigen grundlegenden Tests vermute ich, dass dies etwas mit der Art und Weise zu tun hat, wie Dateien gestreamt werden ... vielleicht wird die Verbindung nicht richtig geschlossen oder etwas in dieser Richtung.
Nach ein paar verschiedenen Dinge auszuprobieren, habe ich festgestellt, dass die folgende Methode funktioniert für mich:
Response.WriteFile(path);
Response.Flush();
Response.Close();
Response.End();
Dies wird, um das Problem oben erwähnt, und Betrachten von Videos führt nicht mehr Internet Explorer zu hängen.
Allerdings ist mein Verständnis, dass Response.WriteFile() lädt die Datei zuerst in den Speicher, und da einige Dateien Streaming möglicherweise sehr groß sein könnte, scheint dies nicht wie eine ideale Lösung.
Ich bin interessiert zu hören, wie andere Entwickler große Dateien in ASP.NET streamen und insbesondere FLV-Videodateien streamen.
Hier ist ein Ansatz, den ich verwendet, die fortsetzbare Download-Funktionalität hinzugefügt, die nützlich wäre, wenn Video-Streaming: http://Stackoverflow.com/a/6475414/222748 – Michael