在客户端改变服务端的内容部可能实现,本文为大家介绍下ASP.NET 关闭页面清除服务端Session的方法,希望对您有所帮助。
要清掉Session有必要回到服务端,在客户端是不能改动服务端内容的。ASP.NET 封闭页面服务端对话层的清空咱们能够变通下——运用ajax。首要咱们要判别用户什么时候封闭了页面,这样才干履行下一步动作。不过HTML DOM没要页面封闭的事情,只要onunload和onbeforeunload是与ASP.NET 封闭页面有关的,ASP.NET 封闭页面或改写后的事情,onbeforeunload是ASP.NET 封闭页面或改写前的事情,所以咱们要用的是onbeforeunload。要判别下用户是封闭页面仍是在改写页面。代码如下:
- window.onbeforeunload=function()
- {
- //这是网上找的,详细没验证过
ClearSession()为ajax调用恳求服务端,服务端接纳到恳求后履行清空Session的操作。Ajax的东西不多说了,下面为代码。
- ========================Default.aspx开端===========================================
- <%@PageLanguage="C#"AutoEventWireup="true"CodeFile="Default.aspx.cs"Inherits="_Default"%>
- <!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <htmlxmlns="http://www.w3.org/1999/xhtml">
- <headrunat="server">
- <title>无标题页</title>
- <scripttype="text/javascript"src="script.js"></script>
- </head>
- <body>
- <formid="form1"runat="server">
- <div>
- <asp:LabelID="Label1"runat="server"></asp:Label>
- <asp:ButtonID="Button1"runat="server"OnClick="Button1_Click"Text="写入Session"/></div>
- </form>
- </body>
- </html>
- ========================Default.aspx完毕===========================================
- ========================Default.aspx.cs开端===========================================
- usingSystem;
- usingSystem.Data;
- usingSystem.Configuration;
- usingSystem.Web;
- usingSystem.Web.Security;
- usingSystem.Web.UI;
- usingSystem.Web.UI.WebControls;
- usingSystem.Web.UI.WebControls.WebParts;
- usingSystem.Web.UI.HtmlControls;
- publicpartialclass_Default:System.Web.UI.Page
- {
- protectedvoidPage_Load(objectsender,EventArgse)
- {
- if(!string.IsNullOrEmpty(Request.QueryString["___command"]))
- {
- stringcmd=Request.QueryString["___command"];
- if(cmd=="ClearSession")
- Session.Remove("name");//清空Session
- }
- if(Session["name"]!=null)
- this.Label1.Text=Session["name"].ToString();
- }
- protectedvoidButton1_Click(objectsender,EventArgse)
- {
- Session["name"]="vvvvvvvvvvvvv";
- if(Session["name"]!=null)
- this.Label1.Text=Session["name"].ToString();
- }
- }
- ========================Default.aspx.cs完毕===========================================
- ========================script.js开端===========================================
- functionGetXmlHttpObject()
- {
- //创立XMLHttpRequest目标来发送和接纳HTTP恳求与呼应
- xmlHttpObj=null;
- try
- {
- //FireFoxOpera8.0+Safari
- xmlHttpObj=newXMLHttpRequest();
- if(xmlHttpObj.overrideMimeType)
- {
- xmlHttpObj.overrideMimeType('text/xml');
- }
- }
- catch(e)
- {
- //IE
- try
- {
- xmlHttpObj=newActiveXObject("Msxml2.XMLHTTP");
- }
- catch(e)
- {
- xmlHttpObj=newActiveXObject("Microsoft.XMLHTTP");
- }
- }
- returnxmlHttpObj;
- }
- functionStateChanged()
- {
- if(___xmlHttp.readyState==4)
- {
- if(___xmlHttp.status==200)
- {
- }
- else
- {
- }
- }
- }
- var___xmlHttp=null;
- functionClearSession()
- {
- if(___xmlHttp==null)
- ___xmlHttp=GetXmlHttpObject();
- if(___xmlHttp==null)
- returnfalse;
- varurl="?___command=ClearSession&___clientRandom="+Math.random();
- ___xmlHttp.open("GET",url,true);
- ___xmlHttp.onreadystatechange=StateChanged;
- ___xmlHttp.send(null);
- }
- window.onbeforeunload=function()
- {
- varn=window.event.screenX-window.screenLeft;
- varb=n>document.documentElement.scrollWidth-20;
- if(b&&window.event.clientY<0||window.event.altKey)
- {
- ClearSession();
- }
- }
本文来自:博客 作者:陈粤雄
【修改引荐】
- 半途封闭ASP.NET是否影响服务器端履行
- 封闭浏览器Session1分钟失效ASP.NET的BUG
- 概述ASP.NET页面结构
- 描绘ASP.NET页面表单
- ASP.NET 页面目标模型
转载请说明出处
知优网 » ASP.NET 封闭页面服务端对话层清空
知优网 » ASP.NET 封闭页面服务端对话层清空