是否有任何适当的解决方案来清除客户端的服务器端会话?

时间:2012-07-29 17:36:33

标签: asp.net

是否有任何适当的方法来清除客户端的服务器端会话。 我使用java脚本来清除会话,但是当页面被重定向时,服务器端会话值将被清除,即使这里没有触发的click事件是我在LICLICK上调用的java脚本代码

<script type="text/javascript">
     function Clear_() {

         '<%=Session["UID"]=""%>';// only this line executes when ever the page is redirected.

         alert('ok');
     }
  </script>

5 个答案:

答案 0 :(得分:1)

您好,您可以尝试使用此代码

function Clear()
{
    location.href="logout.aspx";
}

在文件logout.aspx.cs后面的代码中

  Session.Clear();

答案 1 :(得分:0)

您可以做的是“从javascript调用服务器端页面并在那里清除会话”。

如果您使用的是jQuery,那么这很简单

<a href="somepage.aspx" id="logout">Logout</a>

<script type="text/javascript" >
 $(function(){
   $("#logout").click(function(e){
      e.preventDefault();
      $.post("logout.aspx",function(data){
          //now do something in client side. May be show a message to user
         alert("Succesfully logged out");
      });

   });
 });
</script>

在logout.aspx页面加载事件中,您正在清除会话。 一旦用户注销,您可能需要更新UI的某些部分(登录用户名,某些liknks等)。

答案 2 :(得分:0)

发生这种情况的原因是在解析页面时,它总是查找服务器端标记并首先执行它。与解析服务器端控件相同。因此,即使您编写了代码,也可以触发任何按钮的click事件,代码将在每次加载时执行。 即使您尝试在服务器标记中注释代码,代码也会被执行。

  

       函数Clear_(){

    // '<%=Session["UID"]=""%>';// still this line executes

     alert('ok');
 }   </script>

您的问题的答案是。会话存储为服务器端,那么你怎么能清除它的侧面。您必须向服务器发出AJAX请求并清除服务器上的会话

更新2

与解析服务器控件的aspx页面相同。当请求在服务器上时,需要处理这些服务器标签,然后评估该值。例如,如果您希望从服务器上的某个会话值填充javascript中的某些值。

  

//在javascript中   var myValue =&lt;%= Session [“SomeVal”]%&gt;

因此,在解析页面时,将评估服务器标记内的值并将其替换为实际值(对于控件,将其替换为html)。因此,在发送给客户端的最终输出中,将发送以下标记

  

//在javascript中   var myValue = 50;

您可以通过浏览器中的“查看来源”进行验证。

答案 3 :(得分:0)

您可以在javascript中使用页面方法

PageMethods.EndSession();

[WebMethod()]
public static void EndSession()
{
    HttpContext.Current.Session.Abandon();
}

不要忘记将EnablePageMethods设置为true to Script Manager。

答案 4 :(得分:0)

我认为不可能从客户端删除会话bcz会话是服务器端。如果我们从客户端浏览器中清除所有cookie,那么可能有一件事情可能是会话也被删除了bcz当我们创建会话时asp.net genrates会话ID如果我们成功删除了asp.net会话则存储在客户端浏览器中cookie然后可能会被删除。