Кто отвечает за удаление HttpPostedFile.InputStream - и когда?

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

Теперь, я не получаю много файлов, и у меня нет проблем с тем, что вы не избавляетесь от этого конкретного потока, но для чистоты - кто-нибудь знает, что такое контракт на дизайн?

Ответ 1

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

Обращаясь к проблеме сохранения его в сессии, я бы сказал, что NOOOOOO! Если вам нужно, чтобы он некоторое время записывал его в файловую систему. Когда вам это нужно, он снова воссоздает его как поток и играет с ним. Хранение потока файлов в сеансе (как байтовый массив, возможно?) Звучит как огромная трата ресурсов сеанса (памяти).