包晓琳 - 博览 - 正文

ASP编程中Session对象失效的客户端解决方法

2019-04-09 20:52IT时代网

  Session对象有一个十分重要的属性:Timeout,它用于设置在会话资源被释放前,会话对象所能保持非活动状态的时间(默认值为20分钟)。当Timeout属性设置的时间值耗尽后,会话资源将被释放。通过Timeout属性破坏Session对象,避免了Session对象在服务器中无限制地产生,?;ち朔衿髯试?。但是,在实际网络开发中,常常遇到由于Session对象失效,用户状态信息丢失而导致应用流程无法正常完成的问题。

  虽然利用Timeout属性释放资源的策略是出于?;し衿鞯哪康?,但是Session对象不可预知的失效性,却成为开发应用程序的一个弊病。因而在实际应用程序的开发中,必须解决Session对象失效的问题。

  传统的解决方法

  现有的解决方法都是采用服务器端方法解决Session对象失效问题。典型的处理方法分为两大类:失效前的处理和失效后的处理。

  失效前的处理是指在Session对象尚未失效之前,对变量进行转存等处理,做到防患于未然。典型的解决方法是在应用程序中设定一个定时器,在Session对象失效前5分钟触发定时器,然后重新设置Session对象的各个变量和对象。由于必须在服务器端实时维护该定时器,并且必须保证该段程序在整个会话过程中处于激活状态,所以采用这种方法增加了服务器的额外负载。

  失效后的处理是指在Session对象失效后,立即提示用户进行处理。典型的解决方法是在Session对象失效后,在服务器端保存断点,并提示用户重新登录,继续完成工作。这种方法实现简单,但是往往因为断点的不可完全自动恢复性,以及重新登录过程的复杂性,而受到最终用户的抱怨和指责。

  针对以上两类解决方案的缺陷,笔者在编程实践中结合Cookie对象的特性,采用Session对象与Cookie对象在客户端联合存取会话级变量的方法,既避免了对服务器资源的额外需求,又解决了断点不可自动恢复的问题,而且还免去了重新登录的麻烦。

  新的解决方法

  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中通过Request集合和Response集合读写对象。向Cookie对象写变量的语法如下:

  Response.Cookies(cookie)[(Key)|.attribute] = value

  其中,cookie是Cookie文件名,Key标明一个字典元素,attribute是Cookie 的一个具体性质,value是分给cookie的值。例如,为创建一个叫MyHobby的Cookie,并分配其值为:BasketBall,使用下述语法:

  <%Response.Cookies(“MyHobby")=“BasketBall" %>

  在客户机器上读取Cookie对象的方法如下:

  Request.Cookies(cookie)[(Key)|.attribute]

  其中,cookie是被请求Cookie的名字,Key是子关键字值下标,attribute是用于标明Cookie属性。例如:为抽取一个叫做MyHobby的Cookie中的信息并将它的值写到页面,使用下述语法:

  <% Request.Cookies(“MyHobby") %>

  需要注意的是:不能在HTTP页首信息已被送到请求浏览器之后,再向一个Cookie对象写入信息?;痪浠八?,不能在任何HTML标识符被发送到浏览器之后才向浏览器发送Cookie信息。

  具体实现

  下面通过一个基于ASP技术的聊天室的实现,来介绍如何处理Session对象变量失效的问题。

  ●在用户登录前初始会话级变量:UserName(用于存储登录用户名)。

  <% Session(“UserName")=“" %>

  //初始化Cookie对象

  <% Response.Cookies(“UserName")=“" %>

编辑:

版权与免责声明:

凡未注明"稿件来源"的内容均为转载稿,本网转载出于传递更多信息的目的;如转载稿涉及版权问题,请作者联系我们,同时对于用户评论等信息,本网并不意味着赞同其观点或证实其内容的真实性;


本文地址:http://www.dlnubbs.cn/news/2019/04/09/834318.html

转载本站原创文章请注明来源:包晓琳

点击排行
焦点

超英集结!《乐高大电影2》上演小人物惊天逆袭!

  2019年上半年,电影圈可谓风起云涌。从《黑豹》入围奥斯 ...详情

英伟达GPU开始支持无线AR/VR,首发云服务Cloud Reality

英伟达在日前举行的GPU技术大会宣布了全新的RTX服务器,旨 ...详情

微商迎利好:电商法规范市场秩序 资本入驻迎来逆袭

从2012年起,微商,这一基于微信生态而逐渐发展起来的商业形 ...详情

电竞只要高端 iGame Z390京东热销中

无论是电竞玩家还是硬件爱好者,都喜欢追求高端与完美。所以iG ...详情

Lyft创始人列举五大理由 宣称可帮助战胜Uber

wOD中文科技资讯  3月19日消息,据外媒报道,网约车公司 ...详情

CopyRight ? 2019 包晓琳 www.dlnubbs.cn, All Rights Reserved 漫展网 版权所有

使用漫展网前必读 | 关于我们 | 免责声明 | 隐私政策 | 包晓琳 | 联系我们