私は、ユーザーがドキュメントをアップロード (およびダウンロード) できるようにする ASP.NET Web アプリケーションを使用しています。アップロードもうまく機能していませんが、ダウンロード ダイアログに重大な問題があり、その理由がわかりません。
これらのファイルは、コードと同じマシン上にない共有に保存されます。ファイル オーバーロード ファイル (場所、mimetype、表示名) を使用して、FilePathResult 経由でダウンロードを送信しようとしています。
ユーザーがダウンロード リンクをクリックすると、新しい空白のページが開き、ロード アニメーションが開始されますが、大きなファイル (最大 25 MB) の場合は、保存/ダウンロード ダイアログが表示される前に数分間これに固執します。実際にファイルをダウンロードするのに約 5 秒かかります。
私は探し続けましたが、これまでに見つけた唯一のことは、FilePathResult がファイルをメモリにバッファリングするのではなく、ダウンロードのためにユーザーにファイルを渡すだけであるということです。
わずか 24 mb のファイルでダウンロード ダイアログを表示するのに、なぜ適切な (時間指定された) 5 分 45 秒かかるのかについて、誰か洞察がありますか? IIS または asp が、本来あるべきではない場所にドキュメントをプリロードしているように感じます。たとえそうであっても、このような小さなファイルには時間がかかりすぎます...
参考のため:
public FilePathResult DownloadFile(int id)
{
var file = _fileService.GetByIdForUser(id, base.LoggedInUserId);
return File(file.Location, UploadedFileManager.DetermineContentTypeFrom(file.Extension), file.Name);
}