2012-06-27 3 views
0

У меня есть объект, который мне нужно сохранить в сеансе.Как обновить переменную сеанса после обработки запроса

В начале каждого запроса я копирую объект в коллекцию HttpContext.Current.Items, чтобы его можно было повторно использовать во время запроса.

Во время запроса состояние объекта может быть изменено, поэтому мне нужно записать его обратно на сеанс, чтобы он мог использоваться для следующего запроса.

Я попытался обновить его с помощью обработчика событий HttpApplication.EndRequest, но я обнаружил, что HttpContext.Current.Session на данный момент является нулевым.

Есть ли другой обработчик событий в HttpApplication, который возникает после обработки запроса, но внутри которого я все еще могу получить доступ к HttpContext.Current.Session?

+0

Еще раз - Почему вы копируете переменный сеанс HttpContext.Current.Items ?? Не имеет смысла. – walther

+0

Почему вы копируете объекты сеанса? Почему вы просто не обновляете непосредственно объект сеанса? – freefaller

+0

Иногда наше приложение настроено с помощью для балансировки нагрузки. Я понимаю, что обновление объектов сеанса в этом режиме считывает и записывает на SQL-сервер, поэтому кеширование объекта во время запроса позволяет избежать этого. – Avalanchis

ответ

0

Сессия доступна от события HttpApplication.PostRequestHandlerExecute, который в соответствии с документацией:

«Происходит, когда обработчик событий ASP.NET (например, страница или веб-службы XML) заканчивается исполнение «.

Эта страница была полезна для понимания последовательности событий HttpApplication:

http://blog.dotnetclr.com/archive/2007/03/14/HttpApplication-pipeline-demystified.aspx

Смежные вопросы