Определить, истек ли сеанс с использованием JavaScript - PullRequest
2 голосов
/ 22 июля 2010


Я создаю веб-приложение с использованием ASP.Net. Я использую сессию в моем приложении.
Есть один сценарий, когда я пытаюсь получить доступ к переменной сеанса через Javascript. Он работает нормально, когда я обращаюсь к нему в нормальном состоянии. Но после истечения сеанса, если нажать на любую кнопку, он генерирует исключение и ведет себя ненормально, в результате чего страница не найдена.
Вот код, который я использую;

 var TransactionID = '<% =((Hashtable)(Session["SessionData"]))["TransactionID "] %>';
 if(TransactionID !='')
 {
    //action
 }

Я пытаюсь достичь чего-то вроде сортировки в c #;

String lsStr;
if(null != lsStr)
{
    //action
}

Пожалуйста, помогите мне, если кто-нибудь знает, как проверить, существует ли сессия или нет, используя javascript.
Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 22 июля 2010

Я бы порекомендовал публичную собственность на вашей странице с выделенным кодом, которая имеет:

public string TransactionID
{
   get { 
        var data = ((Hashtable)(Session["SessionData"])); 
        if (data != null)
           return data["TransactionID "];
        else
           return null;
   }
}

Чтобы обойти немедленную ошибку. Если вы хотите, чтобы механизм опроса знал, когда он истекает, рассмотрите возможность обратного отсчета таймера JS / AJAX до идеи сервера. Невозможно проверить сеанс с клиента, не запросив информацию с сервера.

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

НТН.

0 голосов
/ 22 июля 2010

Предложение поставить эту проверку на стороне клиента таймера будет продлевать сеанс каждый раз, когда он запускается, и сеанс никогда не истекает. Делайте это только в том случае, если это требуемая функциональность.

Лучше всегоВыполняйте проверку только тогда, когда вам нужно, выполнив ajax-запрос к странице, которая не требует аутентификации, эта страница может затем проверить, существует ли определенная переменная сеанса и вернуть true или false.

В качестве примера приложенияНедавно я работал над страницей с логикой на стороне клиента, которая требовала проверок, чтобы убедиться, что сеанс все еще существует.В этом случае для этой страницы я знал, что userID всегда сохранялся в Session ["UserID"], поэтому я создал страницу ac # ajax, которая просто возвращала false, если этот объект был нулевым, и true, если он существовал, что позволило мне вызывать эту страницу из JavaScriptи скажите, истек ли сеанс.Это, вероятно, нужно будет немного изменить, чтобы соответствовать вашей ситуации, но я уверен, что вы могли бы сделать что-то, используя ту же логику.

...