Qual è il modo migliore per eseguire lo streaming di file utilizzando ASP.NET?Il modo migliore per eseguire lo streaming di file in ASP.NET
Sembra che ci siano vari metodi per questo, e attualmente sto usando il metodo Response.TransmitFile() all'interno di un gestore http, che invia direttamente il file al browser. Questo è usato per varie cose, incluso l'invio di FLV dall'esterno del webroot a un player video Flash incorporato.
Tuttavia, questo non sembra un metodo affidabile. In particolare, c'è uno strano problema con Internet Explorer (7), in cui il browser si blocca solo dopo aver visto un video o due. Fare clic su qualsiasi link, ecc. Non ha alcun effetto e l'unico modo per far funzionare nuovamente le cose sul sito è chiudere il browser e riaprirlo.
Ciò si verifica anche in altri browser, ma molto meno frequentemente. Basandomi su alcuni test di base, sospetto che questo abbia a che fare con il modo in cui i file vengono trasmessi in streaming ... forse la connessione non viene chiusa correttamente o qualcosa del genere.
Dopo aver provato un paio di cose diverse, ho trovato che il seguente metodo funziona per me:
Response.WriteFile(path);
Response.Flush();
Response.Close();
Response.End();
Questo aggira il problema di cui sopra, e la visualizzazione di video non causa più Internet Explorer da appendere.
Tuttavia, la mia comprensione è che Response.WriteFile() carica il file prima in memoria, e dato che alcuni file in streaming potrebbero potenzialmente essere piuttosto grandi, questa non sembra una soluzione ideale.
Mi interessa sapere come altri sviluppatori eseguono lo streaming di file di grandi dimensioni in ASP.NET e, in particolare, lo streaming di file video FLV.
Ecco un approccio che ho utilizzato che aggiunge la funzionalità di download ripristinabile che sarebbe utile se lo streaming video: http://stackoverflow.com/a/6475414/222748 – Michael