ASP.NET Session的学习

前言 

最近在写一个类似商城的网站,使用了Session来保持用户的登录状态,之前没怎么全面的了解Session,趁这个机会彻底了解下Session,一下内容都是基于自己对网络一些资料和大牛的博客整理,还有一些自己的理解。

1.什么是Session

    Session称为会话状态,是Web系统中最常用的状态,用于维护和当前浏览器实例相关的一些信息。

2.SessionID

  当用户首次与Web服务器建立连接的时候,服务器会给当前访问用户分发一个 SessionID作为标识。SessionID是一个由24个字符组成的随机字符串。用户每次提交页面,浏览器都会把这个SessionID包含在 Http头中提交给Web服务器,这样Web服务器就能区分当前请求页面的是哪一个客户端。这个SessionID就是保存在客户端的,属于客户端Session.(ASP.NET中你如果访问一个后台处理页面,可以用Session.SessionID取值)。客户端Session默认是以cookie的形式来存储的,所以当用户禁用了cookie的话,服务器端就得不到SessionID。

3.Session模式和Session Provider

InProc:会话状态被禁用。

StateServer: 会话状态正在处理 ASP.NET 辅助进程。

SQLServer:会话状态正在使用进程外 ASP.NET 状态服务存储状态信息。

Custom:会话状态正在使用进程外 SQL Server 数据库存储状态信息。

OFF:会话状态正在使用自定义数据存储来存储会话状态信息。

总结:

  • 1、  InProc Session Provider是最快的,因为所有数据都存在应用程序的内存里,Session数据在IIS重启,或者站点被回收的情况下丢失,你可以在用户量较小的网站上使用这种模式,但别在Web Farm下使用。
  • 2、  State Server模式:Session数据被存储于aspnet_state.exe应用中,他在Web服务之外保存Session数据,所以Web服务出现问题不会对他的Session数据造成影响,在将Session数据存储到StateServer之前需要序列化对象,在Web Farm中我们能安全地使用这个模式。
  • 3、  SQL Server模式:他将Session数据保存到SQL Server中,我们需要提供连接串,我们存储时也需要对对象进行序列化,这种模式在实际Web Farm的生产环境中是非常有用的。
  • 4、  我们也能使用自定义模式,当我们需要使用一个已经存在的表来存储Session数据时,在自定义模式中,我们也能创建自定义的Session ID,但是不推荐你自己来实现Provider,推荐使用第三方的Provider。

 4.使用介绍

 web.config中的配置方式  mode:模式,timeout过期时间(分钟)

<system.web>
    <!--InProc是默认的Session模式-->
    <sessionState mode="InProc" timeout="30"></sessionState>
</system.web>

Sesion的读写

   var  ss=new User();
   Session["user"]=ss;//写入
   var  bb= Session["user"] as User;//读取

参考地址:

文章中的内容出处:【译文】漫谈ASP.NET中的Session   作者:ULiiAn·竹

                         Asp.net Session认识加强-Session究竟是如何存储你知道吗?   作者:dz45693

                         ASP.NET中Session的个人浅谈   作者: FlyElephant

                         原文链接

转载于:https://www.cnblogs.com/yzb-bky/p/5676988.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值