码迷,mamicode.com
首页 > Web开发 > 详细

ASP.NET 中的 Session对象

时间:2020-06-21 09:51:24      阅读:101      评论:0      收藏:0      [点我收藏+]

标签:alt   联系   变量   区分   技术   浏览器   news   second   失效   

You reap what you sow.

一份耕耘,一份收获。

通过Cookies存储的数据不安全,因此需要一个更安全的存储对象----Session对象。

1、Session单词含义

Session [?se?n] 一场,一节。在这里可以翻译成会话

牛津: a period of time that is spent doing a particular activity

2、Session 概述

Session通常指一个用户登录网站到注销退出网站所经过的时间。也就是说Session本质上是个时间概念。

一个用户请求Web服务器的时候,服务器为了保存用户的状态,封装了一个Session对象,在浏览器请求后相应回去。面对多个用户,为了便于区分,给每个浏览器传送的Session对象都是不一样的,用Session对象的SessionID 属性来记录。

技术图片

Session和Cookies是有联系的。如果一个浏览器不支持或者禁用了Cookies,那么Session将无法起作用。Session和Cookies本质是一样的,区别是Session是建立在服务端的,Cookies是建立在浏览器端的。

由于Session对象是存在服务器的内存中的,为了节约性能,Session对象都有生命周期属性:Session.Timeout 超过设定的时间,就会自动将改对象遗弃。

3、Session的存储和读取

可以像 窗体变量集合 一样存储:

Session["KeyName"] = value; //通过键名存储
Session[0] = value; //通过索引存储

和存储一样的格式去读取:

Object.value = Session["KeyName"];
Object.value = Session[0];

例子:在Load事件中存储用户的身份证号。存储完成后跳转到UserInfo界面。

protected void Page_Load(object sender, EventArgs e){
    Session["userCard"] = "41302619991011xxxx";
    Response.Redirect("UserInfo.aspx");
}

4、Session 对象的属性和方法

4.1、Session对象的常用属性

属性名称 说明
Timeout 获取或设置会话状态终止前各种请求之间所允许的时间
SessionID 获取会话的唯一标识符
IsCookieless 获取一个值。该值指示会话嵌入URL中还是存储在HTTP Cookie中
Mode 获取会话的状态模式
Keys 获取存储在会话中所有键的集合
IsNewSession 获取一个值。该值指示会话是否与当前请求一起创建的

4.2、Session对象的常用方法

方法名称 说明
Abandon() 取消当前对话
Add() 向会话状态集合添加一个新项
Clear() 从会话状态集合中移除所有键和值

4.3、设置Session销毁的时间

Session 采取滚动计时的方式。若开发者打开并写入Session ,从写入开始,该页面如果一直没有提交操作,则20分钟后,Session就会被服务器自动销毁。如果有提交操作,服务器会在提交后重新计时,以此滚动。

可一通过以下两种方法设置Session。
方法一:

Session["userName"] = "Miss.Zhang";
Session.Timeout = 30;

方法二:

<system.web>
    <sessionState mode="OFF|Inprox|StateServer|SQLServer" 
                  cookieless="true|false" 
                  timeout="number of minutes"
                  stateConnectionString="tcpip=server:port"
                  sqlConnectionString="sql connection string"
                  stateNetworkTimeout="number of seconds"
                  />
                  
    
</system.web>
  1. mode 存哪里,默认存在IIS进程内。OFF表示不使用Session功能,InProc表示存在IIS进程中,StateServer 表示将Session存在ASP.NET状态服务进程中。SQLServer表示将Session存储在服务器磁盘中,服务器挂掉重启后都还在。

  2. cookieless 默认值是false,客户端的Session值存在哪;

  3. timeout 服务器多少分钟后放弃Session信息,默认20min;

  4. stateConnectionString mode值为State Server的时候的必需属性。状态服务存储所在服务器的名称和端口号,例如"tcpip=127.0.0.1:42424" 其中42424是默认端口号。

  5. stateConnectionString mode值为SQL Server的时候的必需属性。

  6. stateNetworkTimeout 设置使用StateServer模式存储,Session断开后,经过多少秒后TCP/IP断开。默认值是10秒。

例子: 设置Session失效时间为20分钟。

<system.web>
    <sessionState timeout="20" />
</system.web>

ASP.NET 中的 Session对象

标签:alt   联系   变量   区分   技术   浏览器   news   second   失效   

原文地址:https://www.cnblogs.com/hillxu/p/13171167.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!