在写b/s框架的系统的时候,我们会发现,我们经常会在不同的网页中验证Session是否存在,,而我这里没有用Session,用的是MemCache技术,其实它就是键值对。
只不过将Memcache中的键,当Cookies中的值存储,然后,验证的时候,返回一步一步获取Memcache中的值。
为了不用每次判断Cookies["sessionid"]是否存在,我们可以把复用代码写在system.Web.UI.Page中的OnInit中,
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Common { public class CheckSessionInfo:System.Web.UI.Page { public BookShop.Model.User LoginUser { get; set; } protected override void OnInit(EventArgs e) { if (Request.Cookies["sessionId"] != null)//判断存储自己定义的sessionId的值是否为空 { string sessionId = Request.Cookies["sessionId"].Value; //从缓存中取出对应的值. object obj= Common.MemcacheHelper.Get(sessionId); if (obj != null) { LoginUser = obj as BookShop.Model.User;//获取登录用户信息 //重新赋值.(滑动过期时间) // Common.MemcacheHelper.Set(sessionId, obj, DateTime.Now.AddMinutes(20)); } else { Common.WebCommon.GoPage(); } } else { Common.WebCommon.GoPage(); } base.OnInit(e); } } }
当你在创建其他类时,只要继承CheckUserInfo类。不过,希望你看了之后,重视OnInit();
http://msdn.microsoft.com/zh-cn/library/ms178472(v=vs.100).aspx 这个网址说的是
ASP.NET 页生命周期概述
大家可以从msdn了解,Oninit方法再页面生命周期中的执行顺序。