Web.config配置文件
在Web.config配置文件中,通过sessionState节点上的mode属性设置
mode值共分为5种:
1.InProc:
mode默认值,只是保存当前应用程序域,重启服务session保存数据丢失。
优点:获取数据快,没有序列化和反序列化的要求。
缺点:占用内存,性能差。
2.StateServer:
优点:独立与IIS服务。
重启ASP.NET进程,session依然有效。
缺点:涉及过多序列化和反序列化。
3.SQLServer:
优点:安全,重启IIS服务后,session数据不会受到影响。
缺点:处理缓慢,涉及过多序列化和反序列化。
4.Custom:
自定义session
5.Off:
使session失效
一、配置Web.config配置文件
1.配置web.config文件
<system.web>
<sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" cookieless="false" timeout="120" />
</system.web>
2.控制面板-管理工具-服务-启动ASP.NET服务
二、将登录用户信息保存到Cookie中
1.将用户信息存储在session中
CurrentUser currentmodel = new CurrentUser();
currentmodel.UserAccount = usermodel.UserAccount;
currentmodel.Password = usermodel.Password;
currentmodel.UserID = usermodel.UserID;
......
//用户信息Session
Session["User"] = currentmodel;
2.将用户信息存储到cookie中
Cookie = new HttpCookie("User");
Cookie["CompanyCode"] = currentmodel.CompanyCode;
Cookie["DepartmentID"] = currentmodel.DepartmentID;
Cookie["Password"] = currentmodel.Password;
......
DateTime dtNow = DateTime.Now;
TimeSpan tsTime = new TimeSpan(0, 10, 0, 0);
Cookie.Expires = dtNow + tsTime;
Response.Cookies.Add(Cookie);
3.根据session是否失效进行判断,如果session失效,将cookie中的信息赋值给session
CurrentUser currentUser = Session["User"] as CurrentUser;
if (Session["User"] == null || currentUser == null)
{
HttpCookie Cookie = System.Web.HttpContext.Current.Request.Cookies["User"];
if (Cookie != null)
{
if (Cookie.Value != "")
{
currentUser = new CurrentUser();
currentUser.CompanyCode = Cookie["CompanyCode"];
currentUser.DepartmentID = Cookie["DepartmentID"];
currentUser.Password = Cookie["Password"];
......
Session["User"] = currentUser;
}
}
}
4.用户登录前或注销登录时,检查session是否为空,若不为空,清除cookie
HttpCookie Cookie = null;
Cookie = new HttpCookie("User");
if (Cookie != null)
{
Cookie.Expires = DateTime.Now.AddDays(-1);
Response.Cookies.Set(Cookie);
}
注:直接用cookie存储是存进去的实体对象,所以应该用子键的方式进行存储用户信息
//创建实体对象
CurrentUser user = new CurrentUser();
//创建cookie对象,将user存在cookie中
HttpCookie cookie = null;
cookie = new HttpCookie("User");
cookie.values["子键1"] = user.属性名1; //子键名跟属性名一致
cookie.values["子键2"] = user.属性名2;
cookie["子键3"] = user.属性名3; //values可以省略