会话状态(Session):Session对象用来保存单个用户的状态。在网站中,每个新访问的用户都将产生自己的会话(Session)对象。这个Session对象是在服务器端进行管理,只能为它所绑定的用户服务。如果另一位用户也访问网站,他也经拥有自己的Sesiion对象。两个用户的Session对象即使同名,也不能共享同一个Session对象。各是各的。
实际上Session对象是HttpSessionState类的实例。有很多属性和方法,大家不妨去看看。这里不阐述了。
就一些例子吧。
string message =Session["source"].ToString();
应用程序状态在网站中总是可用的,这.NET Framework的内部机制,我们不去管。我们来看看Session对象。由于在Machine.config配置文件中的Session设置是启动的,因此不需要额外的步骤就能使用它。尽管如此我们还是要知道一些原理和本质。Machine.config和应用程序的Web.config中的设置决定了是启动还是关闭Session对象。当然如果想要延迟到需要时,在启用也可以。我们可以在页面一级设置。
这条语句的作用是在这个页面中不能使用会话状态(Session)。
Session对象有一个Timeout属性可以设置Session对象的生命周期。它以分钟为单位,默认是20分钟。如果再有效时间内没有连接服务器,那么Session的所有设置都将失效。如果需要终止Session对象,可以用它的Abandon()方法。
差点忘了,Session有一点很重要,补充一下。
session中的关键字是不区分大小写的。因此不要用大小写来区分Session变量。也就是说Session["source"]与Session["SOURCE"]是一样的。如果删掉其中一个,会有意想不到的结果。
Cookie状态: Coolkie 状态一是用来保存一个用户资源的状态。和Session不同的是它存储在浏览器端。在Cookie中只能含有较少的信息,通常不超过4096个字节(有些较新的浏览器可以达到8192个i字节).在ASP.NET中,Session对象和Cookie对象现结合来识别用户。每当用户开始连接站点时,系统将自动在内存块中创建一个和用户有关的Session对象,同时创建一个Cookie对象来保存用户ID并把它保存在浏览器端,与当前的用户唯一的联系起来。这样当用户下一次在访问时,用户被要求提交用户的TD也就是CooKie,Cookie和Session相对照以正确的还原原来的会话状态。这就是无状态协议Http条件下保持用户状态的方法。
向浏览器写入Cookie的方法是这样的。举个例子:
cookie.Value="userNameId"//如果已经存在一Cookie,也可以这样给它赋值。
cookie.Expires=DateTime.Now+TimeSpan;//设定cookie的生命周期,这里的TimeSpan是TimeSpan类的一个实例。
cookie的默认时间是20分钟。Response.Cookies.Add(cookie);//向浏览器中写入Cookie.
HttpCookie cookie1=Request.Cookies["cookie"];//读取Cookie.