zoukankan      html  css  js  c++  java
  • ASP.NET 中的 Session对象

    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>
    

  • 相关阅读:
    PAT甲题题解-1030. Travel Plan (30)-最短路+输出路径
    PAT甲题题解-1029. Median (25)-求两序列的中位数,题目更新了之后不水了
    PAT甲题题解-1028. List Sorting (25)-水排序
    BZOJ 1492 货币兑换Cash
    Codeforces 276D Little Girl and Maximum XOR
    Codeforces 526E Transmitting Levels
    Codeforces 335B Palindrome
    BZOJ 2527 Meteors
    Codeforces 449D Jzzhu and Numbers
    FJ省队集训DAY4 T3
  • 原文地址:https://www.cnblogs.com/hillxu/p/13171167.html
Copyright © 2011-2022 走看看