开发asp.net应用程序,经常会使用session对象,把一些数据保存在session中,然后方便其他的page进行调用。session有一个有效期(默认大概是20分钟),一旦过期,数据就会自动删除。
很多用户在使用asp.net程序的时候,都希望session的有效期长一些(比如3小时),或者干脆不要过期,不然一段时间不用,就需要重新登录,相当麻烦。
我在设置session有效期的时候,却遇到了很多的麻烦。我发现有3个地方都会对session的有效期产生影响:1是web.config中的设置;2是iis设置中网站属性的“会话”时间;3是应用程序池的自动回收时间(这个是Server2003里面的设置)。我在网上读了很多相关的文章,也做了很多实验,但是总是设置不好,搞不清这3个设置项之间的关系。
于是,我想了个另类的方法:只要让一个page定时的刷新,session就永远不会过期了。一般的asp.net程序,都会用f r a m e来管理菜单和页面。通常最上面一条f r a m e是软件的标题,左边一块f r a m e是菜单的树型控件,右边是主要的操作区。我决定让左边的菜单页面定时的刷新。
定时刷新页面的设置非常简单,只要在aspx文件的head标记中,增加下面一行:
<m e t a http-equiv="refresh" content="300" />
300代表的是300秒,也就是5分钟刷新一次,远远小于一般默认的20分钟,用户在使用的时候也几乎不会注意到左侧的刷新,对用户的影响非常小。这样虽然没有根本解决session有效期的设置问题,我还是实现了用户的需求。