2013-09-09 6 views
0

Я хочу автоматически уничтожить сеанс через 1 минуту. но session.timeout не работает для меня. Просмотрите мой код.Уничтожить сеанс после таймаута

Create.asp

<% 

Session.Contents.RemoveAll() 

Session("page") = "Active" 
Session.timeout = 1 
Response.Redirect "time.asp" 

%> 

Time.asp

<% 

Response.Write(Session("page")) 

if Session("page") = "Active" then 
Response.Write("Session is Active,This Page will Expire After 1 mintue ") 

%> 



<h2> Time Out: <span id="timerLabel" runat="server">65</span> </h2> 

<script type="text/javascript"> 

    function countdown() 
    { 
     seconds = document.getElementById("timerLabel").innerHTML; 
     if (seconds > 0) { 
      document.getElementById("timerLabel").innerHTML = seconds - 1; 
      setTimeout("countdown()", 1000); 
     } else { location.reload(); } 
    } 

    setTimeout("countdown()", 1000); 

</script> 

<% else %> 

<a href='create.asp'> Click Here to Create Session </a> 

<% End if %> 

ответ

0

Это, как представляется, необходимо дополнительно 15 секунд, но я не знаю, почему. Установите для начала до 75 секунд, и он должен работать.

Несколько других вещей:

  • runat="server" работает только для приложений ASP.Net. Он игнорируется для классического asp.
  • Вы должны использовать SetInterval вместо повторных вызовов SetTimeout
  • Вы не можете обязательно полагаться на сроки SetTimeout или SetInterval быть идеальным для сравнения. Лучшим способом является сравнение временных меток даты.

Вот функция с поправкой на все это, и расширение, чтобы показать один десятичное место также

var countDownSeconds = 75; 
document.getElementById("timerLabel").innerHTML = countDownSeconds; 
var start = new Date().getTime(); 

function countdown() { 
    var elapsedSeconds = (new Date().getTime() - start)/1000; 
    var secondsRemaining = countDownSeconds - elapsedSeconds; 
    if (secondsRemaining > 0) { 
     document.getElementById("timerLabel").innerHTML = secondsRemaining.toFixed(1); 
    } else { 
     location.reload(); 
    } 
} 

setInterval("countdown()", 100); 

Опять же, я понятия не имею, почему есть дополнительные 15 секунд до классического ASP Session Timeout фактически вызывает. Сожалею.