System.OutOfMemoryException при загрузке файла - PullRequest
2 голосов
/ 08 апреля 2010

У меня есть обработчик ashx со следующим кодом. Идея состоит в том, чтобы скрыть путь к файлу и запросить загрузку

       context.Response.Clear();
       context.Response.AddHeader("Content-Disposition", "attachment; filename=" + fileName);
       context.Response.AddHeader("Content-Length", file.Length.ToString());
       context.Response.ContentType = "application/octet-stream";
       context.Response.WriteFile(file.FullName);

Это прекрасно работает для некоторых файлов, однако для других я получаю

Возникло исключение типа 'System.OutOfMemoryException'.

Ответы [ 2 ]

6 голосов
/ 08 апреля 2010

Очень странно, 7Мб действительно мало. Может быть, в вашем пуле приложений есть низкий лимит?

Если вам нужен только обработчик загрузки файла, используйте HttpResponse.TransmitFile () , которые не буферизуют файл в памяти.

http://msdn.microsoft.com/en-us/library/12s31dhy%28VS.80%29.aspx

0 голосов
/ 08 апреля 2010

Вы заполнили системную память.При больших файлах переданные данные помещаются в буфер.Я бы предложил создать собственный метод кэширования.

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