Не удается сохранить файл из элемента управления UploadFile с помощью сеанса - PullRequest
1 голос
/ 13 октября 2011

Я пытаюсь загрузить файл с помощью элемента управления UploadFile и не могу этого сделать. Проблема возникает, когда я пытаюсь сохранить файл, который я храню в сессии. Прежде всего я назначаю UploadControl переменной сеанса:

Page.Session["postedFile"] = fuUploadGeometry;

После этого, когда я нажимаю кнопку «Загрузить» и хочу сохранить этот файл:

((FileUpload)Session["postedFile"]).SaveAs(filePath);

Я получаю ошибку

cannot access a closed file

Но когда я вызываю напрямую, используя имя FileUpload

fuUploadGeometry.SaveAs(filePaht)

проблема не существует.

Почему ?? Если кто-нибудь знает, как решить эту проблему, я буду благодарен.

!!!!!!!!!!!!!! Проблема решена:)

Я установил в web.config

<httpRuntime maxRequestLength="30480" requestLengthDiskThreshold="30480"

и до сих пор все отлично работает:)

Ответы [ 2 ]

0 голосов
/ 23 октября 2014

Что сказал Андрей.И, устанавливая requestLengthDiskThreshold, вы просто отключаете буферизацию, из-за которой сервер потребляет больше памяти и все работает медленнее.

Я думаю, что правильным решением является использование метода SaveAs для сохранения опубликованного файла в файл.временная папка при ПЕРВОЙ обратной передаче и сохраните путь к временному файлу в viewstate или сеансе.

После любой дополнительной обратной передачи или перенаправления, особенно если задействованы асинхронные потоки, функция SaveAs не будет работатьесли требуется буферизация;вы получите сообщение об ошибке «Невозможно получить доступ к закрытому файлу».

0 голосов
/ 13 октября 2011

Не используйте сессию для этого.Это не имеет смысла.И, как вы обнаружили, вы не можете использовать его вне запроса, в котором он был отправлен.Вот как ты должен это делать.

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