2015-11-07 5 views
0

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

+1

Один из вариантов - проверить глобально, на какой странице вы находитесь, на каждой загрузке страницы. Если эта страница не удаляет эту переменную из сеанса. Но это скорее техническое решение. Я уверен, что есть лучшие способы, в зависимости от вашего сценария. – codeRecap

+0

tanx для вашего ответа @codeRecap –

ответ

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"); 
    } 
} 

Также вы можете проверить this link.

+0

Tanx fot your answer, он работает хорошо :) tanx @ user2771704 –

Смежные вопросы