Используйте функцию Session_End() в файле global.asax. Пожалуйста, смотрите здесь для получения дополнительной информации
SO - Session End
EDIT: Нет, это, вероятно, не будет делать это. См. Комментарии ниже.
Если вы должны переадресовать на истечение срока действия сеанса, может быть что-то подобное сделать для вас?
private void Page_Load(object sender, System.EventArgs e)
{
Response.AddHeader(“Refresh”,Convert.ToString((Session.Timeout * 60) + 5));
if(Session[“IsUserValid”].ToString()==””)
Server.Transfer(“Relogin.aspx”);
}
EDIT 2: Протест, это может получить сложно, если у вас есть AJAX вещь происходит.
Я видел примеры, где люди будут помещать это в page_load базовой страницы и все ваши страницы .aspx с этой базовой страницы. Это не позволит вам добавить этот код для каждой отдельной страницы, которая у вас есть.
Почему первый метод не работает (Session_End)? Эта функция называется внутренне на сервере, когда заканчивается сеанс. Таким образом, нет никакого связанного запроса/ответа на перенаправление или передачу. I.e., эта функция может быть вызвана сервером через 20 минут после закрытия browswer.
Session_End для очистки переменных сеанса не Перенаправление пользователя на другую страницу. – Amitabh
@Amitabh I thnk он имеет в виду функцию в global.aspx – Steven
Нет, он прав, мой плохой. Обновлено сообщение с другим решением. – Tommy