Как очистить переменную сеанса после выгрузки пользовательского элемента управления

Я использую переменную сеанса в пользовательском контроле (ascx), как я могу удалить это из сеанса, когда пользователь закрывает веб-страницу или перенаправляет на другие страницы?

1 ответ

Решение

Для перенаправления вы можете использовать этот код при перенаправленной странице / просмотре:

if (!IsPostBack)
{
   Session.Clear(); //if you want clear session
   Session.Remove("myVar");//if you want clear just 1 session variable
}

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

Вы можете использовать Ajax для прозрачной сессии на закрытии вкладки, как показано ниже.

 <body onunload="unlodFunc()">

    <script>
    function unlodFunc()
    {
      $.ajax({
        type: "POST",
        url: "MyPage.aspx/ClearSession",
        data: "{}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(data) {

        }
    });
    }
    </script>

Код C#:

[WebMethod]
public static void ClearSession()
{
    if (Session["myVar"] != null)
    {
        Session.Remove("myVar");
    }
}

Также вы можете проверить эту ссылку.

Другие вопросы по тегам