Как оптимизировать загрузку файлов в ASP.NET? - PullRequest
0 голосов
/ 17 ноября 2009

У меня есть приложение ASP.NET, которое позволяет пользователям загружать файл при вводе пароля. Я использую код ниже, чтобы отправить файл пользователю:

Context.Response.Clear();
Context.Response.ContentType = "application/pdf";
Context.Response.AddHeader("Content-Disposition", "attachment; filename=" + fileName);
Context.Response.BinaryWrite(File.ReadAllBytes(fileName));
Context.Response.Flush();
Context.Response.Close();   

Проблема заключается в том, что загрузка становится очень медленной, если файлы занимают более 1 МБ или многие пользователи загружают файлы одновременно Можно ли как-то оптимизировать код для повышения производительности?

Ответы [ 2 ]

2 голосов
/ 17 ноября 2009

Вы можете использовать Response.TransmitFile(/* Your file */); вместо Response.BinaryWrite(/* Your file */);

Метод TransmitFile () - записывает данные в поток вывода HTTP без сохранения их в памяти.

1 голос
/ 17 ноября 2009

Почему вы управляете загрузками вручную? Почему бы просто не разместить ссылку на соответствующий файл PDF на странице, которая отображается после успешного входа в систему? Это освободит потоки ASP.NET, чтобы вы не использовали их для управления загрузкой файлов. IIS все равно придется обслуживать их, но я думаю, что это значительно уменьшит ваши накладные расходы.

Вы обеспокоены тем, что имя файла будет раскрыто? Если да, ответьте - есть еще несколько вариантов, которые вы можете изучить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...