Проблема response.redirect в ASP.Net - PullRequest
3 голосов
/ 09 мая 2011

Я использую ASP.Net + VSTS 2008 + .Net 3.5 + C # + IIS 7. Мне интересно, если на стороне сервера я вызываю response.redirect для другого URL в том же веб-приложении, будет ли сеанс продолжен или прекращено?

например. если я устанавливаю переменную сеанса foo в значение "goo" в a.aspx, то в a.aspx я вызываю response.redirect для b.aspx, могу ли я в b.aspx на 100% получить значение для переменной сеанса foo, которое будет " Goo "? Мое замешательство: я слышал, что response.redirect не будет продолжать сеанс на 100%, это правда?

спасибо заранее, George

Ответы [ 5 ]

4 голосов
/ 09 мая 2011

Вы можете использовать перегрузку для Response.Redirect, которая также принимает bool, что не завершает ответ.

Response.Redirect("~/default.aspx", false)

Бертран Ле Рой покрывает это здесь .

2 голосов
/ 09 мая 2011

Response.Redirect убьет ваш сеанс, поэтому он не обязательно будет доступен в b.aspx.Вместо этого попробуйте использовать Response.Redirect("/b.aspx", false);, где параметр false гарантирует, что ответ не будет немедленно уничтожен.

1 голос
/ 09 мая 2011

Значения сеанса сохраняются в течение всего сеанса.Сеанс завершится после закрытия браузера, истечения времени ожидания или закрытия в явном виде.

http://msdn.microsoft.com/en-us/library/ms178581%28v=VS.90%29.aspx

0 голосов
/ 03 сентября 2014

Функция Response.Redirect (url, false) изменит сеанс, если url был абсолютный URL , если вы не хотите терять сеанс использования абсолютный путь вместо.

0 голосов
/ 15 сентября 2013

Моя проблема заключалась в следующем: -

Проблема: Когда мы перемещаем приложение ASP.NET на другой сервер (Windows Server 2008 R2) с IIS 7.5, приложение не может перемещать значения сеанса между страницами,Например, значение сеанса было установлено на первой странице, но оно не могло перейти на следующую страницу.На следующей странице значение для той же переменной сеанса было NULL.

Значения сеанса перемещались на следующую страницу в случае Google Chrome и Firefox, но не в Internet Explorer.

Решение. Мы создали URL-адрес с символом «_» (подчеркивание)

Другое возможное решение:

  1. Используйте Response.Redirect с вторым параметром в качестве "false", чтобы избежать выполнения страницы и, таким образом, избежать потери сеансового токена.Вы должны использовать URL следующим образом.Response.Redirect («NextPage.aspx», false)

  2. Если пул приложений сайта настроен как веб-ферма или веб-сад (путем задания максимального количества рабочих процессовк более чем одному), и если вы не используете службу сеансов или сеансы SQL, входящие запросы будут непредсказуемо поступать в один из рабочих процессов, и если это не тот сеанс, на котором был создан сеанс, он будет потерян.Решением этой проблемы является либо не использовать веб-сад, если вам не требуется повышение производительности, либо использовать одного из поставщиков сеансов вне процесса.

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