基于ASP.net C#技术来实现,介绍如何处理Session对象变量失效的问题
2013-10-16 08:55
981 查看
基于ASP.net C#技术来实现,介绍如何处理Session对象变量失效的问题
Cookie对象是用来存储有关当前用户数据的小信息包,它可以在浏览器和Web服务器之间传递。在Web应用中,Cookie提供了一种用于跟踪、记录每个用户位置的机制。Cookie最常见的用处之一,就是保存一个Web应用中最后一次被访问的网络页面的时间以及日期或被访问的网址。通常,Cookie对象在客户端Windows系统目录下Cookies子目录中以文件形式存储。存储在Cookie对象中的信息数据能够被保存较长时间,所以,可以将会话级变量备份在Cookie对象中,在Session对象失效后,通过检索并利用Cookie对象中的信息来自动恢复断点。
Cookie对象具有如下几个属性:
●Expires:设定Cookie对象到期的日期;
●Domain:将Cookie对象的传送确定为仅由Domain属性确定的成员;
●Path:确定Cookie对象传送路径;
●Secure:明确Cookie对象是否安全;
●HasKeys:返回Cookie对象是否包含多值。
如果没有显式定义Cookie对象的Expires属性,Cookie对象将在用户会话期结束时到期。
具体实现
下面通过一个基于ASP.net C#技术来实现,介绍如何处理Session对象变量失效的问题。
●在用户登录时,设置会话级变量并备份到客户端Cookie对象中。
... ... //登录代码省略,将登录名称存储在Session["User"]中;
//创建一个HttpCookie对象
HttpCookie Cookie= new HttpCookie("User");
//用Cookie备份User
Cookie.Value = Session["User"].ToString();
//设定Cookies的生命周期,在这里定义为一个小时
DateTime dtNow = DateTime.Now;
TimeSpan tsMinute = new TimeSpan(0, 1, 0, 0);
Cookie.Expires = dtNow + tsMinute;
//加入此Cookie
Response.Cookies.Add(Cookie);
●在处理业务功能的时候,读取Session["User"],如果该对象已经失效,则通过读取Cookie对象,恢复该Session["User"]对象的属性值。
if (Session["User"] == null)
{
//如果变量已经失效,则检索客户端Cookie对象
HttpCookie Cookie= System.Web.HttpContext.Current.Request.Cookies["User"];
if (Cookie!= null)
{
if (Cookie.Value != "") Session["User"] = Cookie.Value;
}
}
//如果用户未经过登录就进入该业务功能,则该Cookie对象属性值为空。此时,可提示用户出错,并转向用户登录页面
if (Session["User"] == null)
{
... ...//提示出错
Page.Response.Redirect("/USer/Login.aspx");
}
●当用户退出程序时,清除会话级对象和Cookie对象。
Session["User"] = null;
HttpCookie Cookie;
Cookie= new HttpCookie("User");
Cookie.Expires = DateTime.Now.AddDays(-1);//让Cookie过期由浏览器自动消除
Response.Cookies.Add(Cookie);
Response.Redirect("/Default.aspx");
以上代码在.net 3.5环境C#中运行通过。
小 结
Session对象与Cookie对象在客户端联合存取会话级变量的方法简单实用,并且能够有效地避免用户强行登录等问题,不失为一种较好地解决Session对象失效的客户端方法。
Asp版本的代码取经网也有收录,请您搜索Session可找到。
相关文章推荐
- js_html_input中autocomplete="off"在chrom中失效的解决办法 使用JS模拟锚点跳转 js如何获取url参数 C#模拟httpwebrequest请求_向服务器模拟cookie发送 实习期学到的技术(一) LinqPad的变量比较功能 ASP.NET EF 使用LinqPad 快速学习Linq
- [转]在ASP.NET中如何用C#.NET实现基于表单的验证(二)
- 如何使用 C# .NET 在 ASP.NET 应用程序中实现基于窗体的身份验证
- [转]在ASP.NET中如何用C#.NET实现基于表单的验证(一)
- [导入]如何使用 C# .NET 在 ASP.NET 应用程序中实现基于窗体的身份验证
- 在ASP.NET中如何用C#.NET实现基于表单的验证
- [转]在ASP.NET中如何用C#.NET实现基于表单的验证(二)
- 在ASP.NET中如何用C#.NET实现基于表单的验证
- 在ASP.NET中如何用C#.NET实现基于表单的验证
- Silverlight中如何与Asp.Net交换变量,取得Session的值问题?
- 如何检查 ASP.NET 基于cookie 的 Session 是否失效
- Asp.net中如何处理一个站点不同Web应用通用Session的问题
- 如何使用 C# .NET 在 ASP.NET 应用程序中实现基于窗体的身份验证
- 在ASP.NET中如何用C#.NET实现基于表单的验证
- C#中??和?分别是什么意思? 在ASP.NET开发中一些单词的标准缩写 C#SESSION丢失问题的解决办法 在C#中INTERFACE与ABSTRACT CLASS的区别 SQL命令语句小技巧 JQUERY判断CHECKBOX是否选中三种方法 JS中!=、==、!==、===的用法和区别 在对象比较中,对象相等和对象一致分别指的是什么?
- 如何使用 C# .NET 在 ASP.NET 应用程序中实现基于窗体的身份验证
- 在ASP.NET中如何用C#.NET实现基于表单的验证
- 如何使用 C# .NET 在 ASP.NET 应用程序中实现基于窗体的身份验证
- 在ASP.NET中如何用C#.NET实现基于表单的验证
- 在ASP.NET中如何用C#.NET实现基于表单的验证