可以使用JS调用服务器处理文件来实现清空Session对象。
HTML:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<script type="text/javascript">
var xmlhttp;
function createXmlhttp(){
if(window.XMLHttpRequest){
xmlhttp = new XMLHttpRequest();
}
else if(window.ActiveXObject){
try{
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlhttp;
}
function ClearSession()
{
createXmlhttp();
var url="Service.asmx/ClearSession";
xmlhttp.open("POST",url,true);
xmlhttp.onreadystatechange=handleStateChange;
xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded;");
xmlhttp.send(queryString);
}
function handleStateChange()
{
if(xmlhttp.readyState==4)
{
if(xmlhttp.status==200)
{
//清空成功
}
}
}
</script>
</head>
<body>
<input name="Submit" type="button" onclick="ClearSession();" value="清空Session" />
</body>
WEB服务:
<%@ WebService Language="C#" class="Service" %>
using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Web.SessionState;//不引入是不可以操作Session的
[WebService(Namespace = "http://tsingjun.cn/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class Service : System.Web.Services.WebService
{
[WebMethod(true)]
public int ClearSession()
{
//清空Session代码
return 0;
}
}
可以考虑用ajax的,在后台代码中清除Session对象的。
1、.ashx 文件处理。但是记得要加一个session状态的引用。
2、用ajax中的 PageMethes.方法名调用后台方法。用到ScriptManager。
其实有个简单的就是清除客户端aspnetcookieid这个cookie就行了,不过服务端还是占用内存了
如果要session在服务端占用空间的话就用上面的ajax了