Как уменьшить нагрузку на память и использование потоков при обработке загрузки большого файла в ASP.NET? - PullRequest
3 голосов
/ 21 сентября 2011

Что я хотел бы сделать - это асинхронно передавать запрос в хранилище файлов, чтобы входящий запрос не занимал много памяти и чтобы поток обработки не задерживался для ввода-вывода.вижу, что есть асинхронный обработчик HTTP, который я могу реализовать.Похоже, что это поможет с использованием потока, но похоже, что к этому моменту IIS / ASPNET запрос уже полностью скопировал в память.

Есть ли способ не дать ASP.NET прочитать весь запрос перед его обработкой?

Ответы [ 3 ]

2 голосов
/ 22 сентября 2011

В HttpRequest в .NET 4 добавлен новый метод с именем GetBufferlessInputStream () , который предоставляет синхронный доступ к потоку запросов.

Из статьи MSDN :

Этот метод предоставляет альтернативу использованию свойства InputStream. Свойство InputStream ожидает получения полного запроса до того, как оно возвращает объект Stream. Напротив, метод GetBufferlessInputStream немедленно возвращает объект Stream. Вы можете использовать метод, чтобы начать обработку тела объекта до того, как будет получено полное содержимое тела.

Возможность асинхронного доступа к потоку запросов будет доступна в .NET 4.5. См. Что нового в ASP.NET 4.5, статья для получения дополнительной информации. Похоже, что в 4.5 будет несколько хороших улучшений производительности ASP.NET.

0 голосов
/ 21 сентября 2011

Хотя этот вопрос SO конкретно относится к MVC, ответы должны работать для ASP.NET в целом. В частности, похоже, что у людей был хороший опыт использования UploadModule Даррена Джонстона .

0 голосов
/ 21 сентября 2011

вы ищете недостаточно.

решение, которое вам нужно, объясняется здесь, шаг за шагом, очень подробно: Эффективная загрузка больших файлов с помощью потоковой передачи

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

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