ASP.NET SessionState TimeOut не работает - PullRequest
0 голосов
/ 13 ноября 2011

Я хочу, чтобы моя веб-страница закрывалась по истечении времени ожидания SessionState. Это мой код в моей веб-конфигурации:

<system.web>
<sessionState timeout="1" mode="InProc"/>
</system.web>

Я установил 1 минуту для тестирования. Вот мой код Global.asax:

protected void Session_End(object sender, EventArgs e)
{
    Response.Redirect("~/LogOut.aspx");
}

Я поместил метку на одну из страниц, чтобы проверить время ожидания сеанса, это код в событии Page_Load:

lblSession.Text = "SESSION TIME: " + Session.Timeout.ToString();

Когда я захожу на сайт и захожу на эту страницу, на этикетке отображается ВРЕМЯ СЕССИИ: 1, но через 1 минуту я не перенаправляюсь на страницу выхода из системы, и настоящая страница все еще полностью активна и работает, что, очевидно, означает сеанс не был прерван. Я работаю в Visual Studio 2008 через сервер разработки, поэтому предложения, которые я видел относительно настроек IIS, на данном этапе не актуальны. Пожалуйста, помогите!

Ответы [ 3 ]

3 голосов
/ 13 ноября 2011

HTTP - это протокол запроса / ответа. нет постоянного соединения между браузером и сервером.Таким образом, код в Session_End фактически ничего не делает - он не может сказать браузеру что-либо делать.

Вам нужно было бы создать (на стороне клиента) таймер JavaScript и actively загрузить страницу выхода правильнодо истечения времени ожидания сеанса.

1 голос
/ 13 ноября 2011

Session_End по моему опыту вызывается при первой обратной передаче (может быть реализовано через таймер на стороне клиента) после истечения времени ожидания - всякий раз, когда это может быть ... если пользователь просто закрывает браузер, это событие никогда не может call (за исключением случая, когда вы создали специальный обработчик JS unload для выполнения обратной передачи в этой ситуации).

Для получения дополнительной информации см .:

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

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

Подробнее о сеансе и сеансе устранения неполадок ... http://aspalliance.com/1182_Troubleshooting_Session_Related_Issues_in_ASPNET

...