Обработка потери времени ожидания сеанса - PullRequest
1 голос
/ 24 ноября 2011

В модуле, который я написал, я храню в сеансе товары, которые пользователь добавил в свою корзину. Как бы вы справились с такой ситуацией: пользователь добавляет новый товар в свою корзину после истечения времени ожидания сеанса?
Я могу перенаправить на домашнюю страницу, но тогда я вызываю перенаправление, даже если сеанс не использовался. например, когда пользователь не вошел в систему или его корзина была пуста.

Как вы справляетесь с тайм-аутом сессии в ваших приложениях?

Ответы [ 3 ]

5 голосов
/ 24 ноября 2011

В этом случае я мог бы не использовать встроенный поставщик сеансов ASP.NET. Вместо этого вы можете установить постоянный файл cookie для сеанса корзины покупателя с зашифрованным идентификатором, который сопоставляется с сеансом, хранящимся в базе данных, в которой хранится содержимое корзины.

Таким образом, вам не нужно беспокоиться о тайм-аутах, сеанс будет продолжаться в течение всего времени существования файла cookie.

(Если вам действительно нужно использовать ASP.NET Session, возможно, у вас уже есть код, который его использует, тогда вы можете установить тайм-аут на очень большое число и настроить поставщика состояний сеанса на использовать SQL Server.)

1 голос
/ 24 ноября 2011

На вашей странице может быть запущен таймер JavaScript, и по истечении этого времени страница перенаправляется на другую страницу, например, login, с параметрами строки запроса в качестве флагов.Когда экран входа в систему вызывается с флагом x, корзина покупок сохраняется в базе данных для безопасного хранения.Главное, чтобы время ожидания было короче, чем время ожидания сеанса.

ДОБАВЛЕНО:

Javascript на каждой странице:

<body onload="PageLoad();">

<script type="text/javascript">
    function PageLoad() 
    {
        var t = setTimeout("ExceuteTimeOutTransfer()", 15000);
    }

    function ExceuteTimeOutTransfer() 
    {
        window.location.href = "http://localhost/webplaying/Login.aspx?timeout=Y";
    }
</script>

Код позадина странице входа:

protected void Page_Load(object sender, EventArgs e)
{
    if (Request.QueryString["timeout"] != null)
    {
        if (Request.QueryString["timeout"].ToUpper() == "Y")
        {
            SaveCart();
        }
    }
}

private void SaveCart()
{
    lblResult.Text = "Cart Saved";
}
0 голосов
/ 24 ноября 2011

Альтернативой может быть сохранение корзины в файле cookie.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...