Quelle est la meilleure façon de diffuser des fichiers à l'aide ASP.NET?
Il semble qu'il existe différentes méthodes pour cela, et je suis actuellement en utilisant la Réponse.TransmitFile() méthode à l'intérieur d'un gestionnaire http, qui envoie le fichier dans le navigateur directement. Ce est utilisé pour différentes choses, y compris l'envoi FLV provenant de l'extérieur de la racine de votre site pour un Flash intégré lecteur vidéo.
Cependant, cela ne semble pas être une méthode fiable. En particulier, il y a un problème étrange avec Internet Explorer (7), où le navigateur se bloque après une vidéo ou deux sont considérés. En cliquant sur tous les liens, etc n'ont aucun effet, et la seule façon d'obtenir les choses à travailler de nouveau sur le site est de fermer le navigateur et ouvrez-la à nouveau.
Cela se produit également dans d'autres navigateurs, mais beaucoup moins fréquemment. Basé sur certains test de base, je suppose que c'est quelque chose à voir avec la façon dont les fichiers sont en train d'être diffusée... peut-être que la connexion n'est pas fermée correctement, ou quelque chose le long de ces lignes.
Après avoir essayé plusieurs choses différentes, j'ai trouvé que la méthode suivante fonctionne pour moi:
Response.WriteFile(path);
Response.Flush();
Response.Close();
Response.End();
Cela permet de contourner le problème mentionné ci-dessus, et le visionnage de vidéos ne provoque plus d'Internet Explorer pour bloquer.
Cependant, ma compréhension est que la Réponse.WriteFile() charge le fichier en mémoire, et étant donné que certains fichiers sont diffusées pourraient être très grande, cela ne semble pas être une solution idéale.
Je suis intéressé à entendre comment les autres développeurs sont en streaming des fichiers volumineux en ASP.NET et, en particulier, le streaming des fichiers vidéo FLV.