• 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>
    

  • 相关阅读:
    服务端渲染和客户端渲染
    【Airtest更新】AirtestIDE更新至1.2.10;Airtest更新至1.2.0
    AirtestIDE更新:1.2.9新版来袭~
    Airtest从入门到放弃?不要急,这份免费的“超长”攻略请收好!
    Airtest更新:1.1.9版本来袭~
    Airtest启动器的妙用--添加自定义的变量
    Airtest启动器的妙用--添加自定义的命令行参数
    脱离Mac搞iOS自动化,tidevice工具教你轻松实现!
    iOS自动化实操--设备基本信息获取与计算器案例详解
    Airtest快问快答,你们想问的这里都有!(第2期)
  • 原文地址:https://www.cnblogs.com/hillxu/p/13171167.html
Copyright © 2020-2023  润新知