Response.redirect не сохраняет HttpContext.Current.Items

Я узнал оHttpContext и узнал, что

HttpContext объект будет создаваться заново для каждого запроса, переданного приложению ASP.Net

Теперь рассмотрим случай, когда у меня есть две страницы. WebForm1 и Webform2. В Form1 я пишу приведенный ниже код и перенаправляю на form2.

HttpContext.Current.Items.Add("Key", "Value");
запрос

Когда я использую Server.Transfer, этот ключ сохраняется, и это не так при использовании Response.Redirect

неразбериха

Когда новый запрос генерируется, создается объект HttpCopntext. Более того, сессия сохраняется. Который является частью HttpContext.

HttpContext.Current.Session

Если сессия может сохраняться, почему не можетHttpContext.Current.Items в ?Response.Redirect

 John Saunders22 мая 2013 г., 23:31

Ответы на вопрос(2)

dotPeek вSystem.Web.dllв частности на имуществоHttpContext.Session который использует в геттереHttpContext.Items["AspSession"] и при методеSessionStateModule.InitStateStoreItem(...) (звонил в тот геттер) который звонитSessionStateUtility.AddHttpSessionStateToContext(...), Вы можете видеть, что содержимое коллекции HttpSessionState хранится между запросами вSessionStateStoreProviderBase реализовано (InProc,SQLб) объект, глубже одним словом. В то время какHttpContext.Items hashtable инициализируется при первом получении и умирает между запросами.

Решение Вопроса

HttpContext вот почему элементы в нем теряются - перенаправление эффективно сообщает браузеру следующий URL-адрес для запроса, и когда это происходит, он теряет контекст предыдущего запроса, который вызвал перенаправление.

Сеанс сохраняется между запросами (обычно с использованием cookie-файла sessionID для привязки пользователя к значениям на сервере) и, таким образом, все еще доступен.

 user233392222 мая 2013 г., 19:08
Я имею в виду, какие вещи держитSession а предметы не держит?
 doublesharp22 мая 2013 г., 19:07
Потому что первый - это дизайн, сохраняющийся между запросами, а второй - нет.
 user233392222 мая 2013 г., 19:06
HttpContext.Current.Session сохраняться иHttpContext.Cuttent.Items не. Зачем ?

Ваш ответ на вопрос