今天小编给大家分享一下session使用的方法是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
Session数据保存在服务器端, 但是每一个客户端都需要保存一个SessionID, SessionID保存在Cookies中, 关闭浏览器时过期.
在向服务器发送的HTTP请求中会包含SessionID, 服务器端根据SessionID获取获取此用户的Session信息.
很多初级开发人员不知道SessionID和Cookies的关系, 所以常常认为两者没有联系. 这是不正确的. 正是因为SessionID保存在Cookies中, 所以在我们保存Cookies的时候,一定要注意不要因为Cookies的大小和个数问题而导致SessionID对象. 在我们的程序中, 对SessionID的Cookies有特殊的处理:
/// <summary> /// 写入cookie. /// </summary> /// <param name="day"></param> /// <returns></returns> public bool SetCookie(int day) { string CookieName = GetType().ToString(); HttpCookie SessionCookie = null; //对 SessionId 进行备份. if (HttpContext.Current.Request.Cookies["ASP.NET_SessionId"] != null) { string SesssionId = HttpContext.Current.Request.Cookies["ASP.NET_SessionId"].Value.ToString(); SessionCookie = new HttpCookie("ASP.NET_SessionId"); SessionCookie.Value = SesssionId; }
//省略掉中间的代码部分.只保留备份SessionID和找回SessionID的逻辑
//如果cookie总数超过20 个, 重写ASP.NET_SessionId, 以防Session 丢失. if (HttpContext.Current.Request.Cookies.Count > 20 && SessionCookie != null) { if (SessionCookie.Value != string.Empty) { HttpContext.Current.Response.Cookies.Remove("ASP.NET_SessionId"); HttpContext.Current.Response.Cookies.Add(SessionCookie); } } return true; }
将Session保存在独立的服务器中可以实现在多台Web服务器之间共享Session.虽然我们也可以自己开发Session存储系统, 但是使用ASP.NET自带的存储机制将更加便捷.
.NET提供了5种保存Seission的方式:
方式名称 | 存储方式 | 性能 |
---|---|---|
Off | 设置为不使用Session功能 | 无 |
InProc | 设置为将Session存储在进程内,就是ASP中的存储方式,这是默认值。 | 性能最高 |
StateServer | 设置为将Session存储在独立的状态服务中。通常是aspnet_state.exe进程. | 性能损失10-15% |
SQLServer | 设置将Session存储在SQL Server中。 | 性能损失10-20% |
Customer | 自定制的存储方案 | 由实现方式确定 |
我们可以在Web.Config中配置程序使用的Session存储方式.默认情况下是InProc, 即保存在IIS进程中.
以上就是“session使用的方法是什么”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。