Какие меры предосторожности следует предпринять при обработке больших файлов в ASP.NET? - PullRequest
1 голос
/ 09 ноября 2008

Мое приложение ASP.NET позволяет пользователям загружать и скачивать большие файлы. Обе процедуры включают чтение и запись файловых потоков. Что я должен сделать, чтобы приложение не зависало и не зависало при обработке большого файла? Должны ли файловые операции обрабатываться, например, в рабочем потоке?

Ответы [ 2 ]

1 голос
/ 09 ноября 2008

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

например. отрывок из загружаемого приложения внутри цикла while, который читает файл:

// Read the data in buffer.
length = iStream.Read(buffer, 0, bufferSize);

// Write the data to the current output stream.
Response.OutputStream.Write(buffer, 0, length);

Где bufferSize - что-то разумное, например 100000 байт, компромисс в том, что он будет медленнее для меньших размеров буфера.

http://support.microsoft.com/kb/812406

Редактировать: Также убедитесь, что IIS настроен на достаточно большую длину запроса (IIS7) и время ожидания.

0 голосов
/ 09 ноября 2008

Если это не является основной целью вашего сайта, рассмотрите возможность разделения этих операций на отдельное приложение, например, суб-приложение или суб-домен. Помимо снижения риска это также упростит масштабирование по мере роста вашей пользовательской базы.

...