FileStreamResultを使用して、SilverlightMediaElementベースのビデオプレーヤーにビデオデータを提供しています。
public ActionResult Preview(Guid id) {
return new FileStreamResult(
Services.AssetStore.GetStream(id, ContentType.Preview),
"application/octet-stream");
}
残念ながら、Silverlightビデオプレーヤーは、再生を開始する前にビデオファイル全体をダウンロードします。Preview
アクションは部分的なコンテンツのダウンロードをサポートしていないため、この動作は予想されます。
(補足:ファイルがIIS仮想ディレクトリでホストされている場合、ダウンロード中にビデオの任意の場所で再生を開始できます。ただし、セキュリティと監査の理由から、直接ダウンロードリンクを提供することはできません。したがって、これはそうではありません。オプション。)
部分的なHTTPコンテンツをサポートするようにコントローラーアクションをどのように改善できますか?
最初にサポートしていることをクライアントに通知する必要があると思います(HEADリクエストに「Accept-Ranges:bytes」ヘッダーを追加します)。次に、HTTP「Range」ヘッダーを評価し、リクエストされたファイル範囲を応答でストリーミングする必要があります。コード206。IIS6でホストされているASP.NETMVCで機能しますか?すでに利用可能なコードはありますか?
以下も参照してください。