是否有任何适当的方法来清除客户端的服务器端会话。 我使用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>
答案 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然后可能会被删除。