Таймер сессии в asp.net - PullRequest
       37

Таймер сессии в asp.net

0 голосов
/ 17 февраля 2012

У меня есть веб-приложение asp.net, в котором режим состояния сеанса - «InProc». Для Inproc по умолчанию срок действия сеанса составляет 20 минут. Я хотел бы отобразить всплывающее окно обратного отсчета истечения сеанса за одну минуту до истечения сеанса. Но я не могу найти собственность, которая говорит, сколько минут прошло. Как узнать, что это 19 минута? Прямо сейчас я делаю как ниже:

if (Context.Session != null)// Check whether the session is null
             { 
              if (Session.IsNewSession)// If the session is null, check whether the session is new
               {
               Response.Redirect("../SessionTimeout.aspx");//Redirect to time out page
               }
             }

1 Ответ

0 голосов
/ 17 февраля 2012

Вы можете использовать некоторые Ajax для достижения этой цели. Вот возможное решение:

<script type="text/javascript">

    function checkAuthenticated() {
        {
            $.ajax({
                type: "POST",
                url: "CheckAutheticated.asmx/checkAuthenticated",
                data: "{}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: checkAuthenticatedOk,
                error: checkAuthenticatedError
            });
        }
    }
    function checkAuthenticatedOk() { }
    function checkAuthenticatedError() {
        $("#sessionExpiredCover").show();
    }
    </script>
    <style type="text/css">
    #sessionExpiredCover {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 100000;
    display: none;
    background-color: #fff;
    /*opacity: .7;
    filter:progid:DXImageTransform.Microsoft.BasicImage(opacity=.7);*/
    }
    </style>

<div id="sessionExpiredCover">
    <div style="background-color:#fff; margin:100px; height:200px; width:400px;"><h1>Session expired</h1>
        <br />
        <asp:HyperLink NavigateUrl="~/Login.aspx" runat="server" Text="Please log in again" />
    </div>
</div>

тогда вам нужно разработать код обратного отсчета в WebMethod:

<%@ WebService Language="C#" Class="CheckAutheticated" %>

using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment     the following line. 
[System.Web.Script.Services.ScriptService]
public class CheckAutheticated  : System.Web.Services.WebService {

[WebMethod]
public string checkAuthenticated()
{
   //your countDownCode 
   return "authenticated";
}

}
...