¿Cuál es la mejor forma de transmitir archivos utilizando ASP.NET?La mejor manera de transmitir archivos en ASP.NET
Parece haber varios métodos para esto, y actualmente estoy usando el método Response.TransmitFile() dentro de un controlador http, que envía el archivo directamente al navegador. Esto se usa para varias cosas, incluido el envío de archivos FLV desde fuera de la webroot a un reproductor de video Flash incrustado.
Sin embargo, esto no parece ser un método confiable. En particular, hay un problema extraño con Internet Explorer (7), donde el navegador simplemente se cuelga después de ver un video o dos. Hacer clic en cualquier enlace, etc. no tiene ningún efecto, y la única manera de hacer que las cosas funcionen nuevamente en el sitio es cerrar el navegador y volver a abrirlo.
Esto también ocurre en otros navegadores, pero con mucha menos frecuencia. En base a algunas pruebas básicas, sospecho que esto tiene que ver con la forma en que se transmiten los archivos ... tal vez la conexión no se cierra correctamente, o algo así.
Después de probar algunas cosas diferentes, he encontrado que el siguiente método funciona para mí:
Response.WriteFile(path);
Response.Flush();
Response.Close();
Response.End();
Esto consigue solucionar el problema mencionado anteriormente, y la visualización de los videos ya no hace que Internet Explorer se cuelgue.
Sin embargo, tengo entendido que Response.WriteFile() primero carga el archivo en la memoria, y dado que algunos archivos que se transmiten podrían ser bastante grandes, esto no parece una solución ideal.
Me interesa saber cómo otros desarrolladores están transmitiendo grandes archivos en ASP.NET y, en particular, reproduciendo archivos de video FLV.
Este es un enfoque que utilicé el cual agrega funcionalidad de descarga reanudable que sería útil si se está transmitiendo video: http://stackoverflow.com/a/6475414/222748 – Michael