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可以省略