Существует некоторый принцип неопределенности в попытке определить, когда сеанс истек. Опрашивая сервер, чтобы узнать, жив ли он (используя AJAX или аналогичный), вы фактически поддерживаете его в действии, что обычно является совершенно противоположным поведением, которое вы хотите.
Обычно я делаю это, вставляя код javascript на страницу. :
var sessionTimeout = 20; //minutes - set this programmatically server-side based on your configured timout interval
setTimeout('timeoutAlert()', (sessionTimeout + 1) * 1000 * 60); //we add one minute buffer because this is an inaccurate process and we want to make sure they are actually timed out before we attempt to redirect
function timeoutAlert()
{
alert("Your sesssion has ended, you will now be redirect to the login page.");
document.location = '/home.aspx';
}
Обратите внимание, что timeoutAlert () может модифицировать некоторую HTML-часть на стороне клиента, запустить AJAX для выполнения кода на стороне сервера, независимо от того, что вам нужно. Вы должны быть осторожны, чтобы отменить и сбросить setTimeout, если вы делаете какие-либо вызовы на сервер (например, через AJAX) после отображения страницы.