コントローラー クラスで組み込みの File() メソッドを使用して、次のようなファイルを返します。
return File(fileByteArray, "application/octet-stream", filename);
実際のページ自体では、ファイルをダウンロードする方法は、ファイルをダウンロードする特定のアクションへの Html.ActionLink() で生成された単純なリンクです。
これは問題なく動作し、ユーザーはファイルをダウンロードできますが、ユーザーが Firefox のファイルを開くダイアログを閉じた後、青い円形の Firefox throbber が回転し続け、消えることはありません! これは、ユーザーがページで何もできず、アドレス バーの横にあるリロード ボタンをクリックしてページをリロードする必要があることを意味します (F5 キーストロークもブロックされるため)。