session的存储方式和配置

session的存储方式和配置方法介绍 Session又称为会话状态,是Web系统中最常用的状态,用于维护和当前浏览器实例相关的一些信息。我们控制用户去权限中经常用到Session来存储用户状态,这篇文章会讲下Session的存储方式、在web.config中如何配置Session、Session的生命周期等内容 立即下载

Session又称为会话状态,是Web系统中最常用的状态,用于维护和当前浏览器实例相关的一些信息。我们控制用户去权限中经常用到Session来存储用户状态,这篇文章会讲下Session的存储方式、在web.config中如何配置Session、Session的生命周期等内容。

1、Session的存储方式。

session其实分为客户端Session和服务器端Session。

当用户首次与Web服务器建立连接的时候,服务器会给用户分发一个 SessionID作为标识。SessionID是一个由24个字符组成的随机字符串。用户每次提交页面,浏览器都会把这个SessionID包含在 HTTP头中提交给Web服务器,这样Web服务器就能区分当前请求页面的是哪一个客户端。这个SessionID就是保存在客户端的,属于客户端Session。

其实客户端Session默认是以cookie的形式来存储的,所以当用户禁用了cookie的话,服务器端就得不到SessionID。这时我们可以使用url的方式来存储客户端Session。也就是将SessionID直接写在了url中,当然这种方法不常用。

我们大多数提到的Session都是指服务器端Session。他有三种存储方式(自定义存储在这里不做讨论):

1.1保存在IIS进程中:

保存在IIS进程中是指把Session数据保存在IIS的运行的进程中,也就是inetinfo.exe这个进程中,这也是默认的Session的存方式,也是最常用的。

这种方式的优点是简单,性能最高。但是当重启IIS服务器时Session丢失。

1.2.保存在StateServer上

这种存储模式是指将Session数据存储在一个称为Asp.Net状态服务进程中,该进程独立于Asp.Net辅助进程或IIS应用程序池的单独进程,使用此模式可以确保在重新启动Web应用程序时保留会话状态,并使会话状态可以用于网络中的多个Web服务器。

1.3.保存在SQL Server数据库中

可以配置把Session数据存储到SQL Server数据库中,为了进行这样的配置,程序员首先需要准备SQL Server数据服务器,然后在运行.NET自带安装工具安装状态数据库。

这种方式在服务器挂掉重启后都还在,因为他存储在内存和磁盘中。

下面是这三种方式的比较:

说明InProcStateServerSQLServer
存储物理位置IIS进程(内存)Windows服务进程(内存)SQLServer数据库(磁盘)
存储类型限制无限制可以序列化的类型可以序列化的类型
存储大小限制无限制
使用范围当前请求上下文,对于每个用户独立
生命周期第一次访问网站的时候创建Session超时后销毁
优点性能比较高Session不依赖Web服务器,不容易丢失
缺点容易丢失序列化与反序列化消耗CPU资源序列化与反序列化消耗CPU资源,从磁盘读取Session比较慢
使用原则不要存放大量数据

2、在web.config中配置Session

Web.config文件中的Session配置信息:

<sessionState mode="Off|InProc|StateServer|SQLServer"

cookieless="true|false"

timeout="number of minutes"

stateConnectionString="tcpip=server:port"

sqlConnectionString="sql connection string"

stateNetworkTimeout="number of seconds"

/>

mode 设置将Session信息存储到哪里:

— Off 设置为不使用Session功能;
— InProc 设置为将Session存储在进程内,就是ASP中的存储方式,这是默认值;
— StateServer 设置为将Session存储在独立的状态服务中;
— SQLServer 设置将Session存储在SQL Server中。

cookieless 设置客户端的Session信息存储到哪里:

— true 使用Cookieless模式;这时客户端的Session信息就不再使用Cookie存储了,而是将其通过URL存储。比如网址为http://localhost/MyTestApplication/(ulqsek45heu3ic2a5zgdl245)/default.aspx

— false 使用Cookie模式,这是默认值。

timeout 设置经过多少分钟后服务器自动放弃Session信息。默认为20分钟。

stateConnectionString 设置将Session信息存储在状态服务中时使用的服务器名称和端口号,例如:"tcpip=127.0.0.1:42424”。当mode的值是StateServer是,这个属性是必需的。(42424是默认端口)。

sqlConnectionString 设置与SQL Server连接时的连接字符串。例如"data source=localhost;Integrated Security=SSPI;Initial Catalog=northwind"。当mode的值是SQLServer时,这个属性是必需的。

stateNetworkTimeout 设置当使用StateServer模式存储Session状态时,经过多少秒空闲后,断开Web服务器与存储状态信息的服务器的TCP/IP连接的。默认值是10秒钟。

下面来说下用StateServer和SqlServer来存储Session的方法

2.1 StateServer

第1步是打开状态服务。依次打开“控制面板”→“管理工具”→“服务”命令,找到ASP.NET状态服务一项,右键单击服务选择启动。

如果你正式决定使用状态服务存储Session前,别忘记修改服务为自启动(在操作系统重启后服务能自己启动)以免忘记启动服务而造成网站Session不能使用

第2步,在system.web节点中加入:stateNetworkTimeout="20"> stateConnectionString表示状态服务器的通信地址(IP:服务端口号)。由于我们现在在本机进行测试,这里设置成本机地址127.0.0.1。状态服务默认的监听端口为42422。当然,您也可以通过修改注册表来修改状态服务的端口号。

(修改注册表来修改状态服务的端口号的方法:在运行中输入regedit启动注册表编辑器—依次打开HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesaspnet_stateParameters节点,双击Port选项—选择基数为十进制,然后输入一个端口号即可。)

2.2 SqlServer

在SQL Server中执行一个叫做InstallSqlState.sql的脚本文件。这个脚本文件将在SQL Server中创建一个用来专门存储Session信息的数据库,及一个维护Session信息数据库的SQL Server代理作业。我们可以在以下路径中找到那个文件:

[system drive]\winnt\Microsoft.NET\Framework\[version]\ 

然后打开查询分析器,连接到SQL Server服务器,打开刚才的那个文件并且执行。稍等片刻,数据库及作业就建立好了。这时,你可以打开企业管理器,看到新增了一个叫ASPState的数据库。

修改mode的值改为SQLServer。注意,还要同时修改sqlConnectionString的值,格式为:sqlConnectionString="data source=localhost; Integrated Security=SSPI;"(这种是通过windows集成身份验证)

3、Session的生命周期

Session的生命周期其实在第一节已经讲过了,和不同的存储过程有关。

4、遍历以及销毁Session

4.1遍历:

System.Collections.IEnumerator SessionEnum = Session.Keys.GetEnumerator();
while (SessionEnum.MoveNext())
{
    Response.Write(Session[SessionEnum.Current.ToString()].ToString() + " ");
}

4.2 销毁:Session.Abandon()。

python 识别滑块验证码 博客来源于: https://www.cnblogs.com/wyh0923/p/16528354.html # -*- coding: utf-8 -*- # https://gov.pkulaw.cn/ 1. import io 2. import json 3. from pathlib import Path 4. from PIL import Image 5. import bas... 阅读详情

相关推荐

GEO数据挖掘实战:用R语言从GSE42872数据集中找到关键差异基因(附完整代码)

本文详细介绍了使用R语言从GSE42872数据集中挖掘关键差异基因的完整流程,包括数据下载、探针ID转换、差异表达分析和功能富集分析。通过实战代码演示,帮助生信研究者掌握GEO数据挖掘的核心技术,快速识别疾病相关基因并理解其生物学功能。

weixin_42625070的博客 365

Webflux 之 session timout 修改

背景 webflux 采用 gateway 集成的微服务 默认session.timeout=30min 但是修改yml配置文件之后 发现session.timout并不生效 server: servler: session: timeout: PT10M 调试源码,发现时间参数是传过去了 package org.springframework.boot.web.servlet.server; ​ public class Session...

afawhsh159的博客 1540

5分钟搞定!用Cursor和.NET 9.0快速搭建串口通讯上位机(附VS Code插件配置)

本文分享了如何利用Cursor AI编程助手与.NET 9.0,在5分钟内快速构建一个功能完整的串口通讯上位机程序。通过自然语言描述需求,AI自动生成WinForms界面和核心代码,极大提升了硬件调试工具的定制开发效率。文章详细介绍了环境配置、AI协作编码、功能实现与调试的全过程。

weixin_28366353的博客 274

webflux session属性修改

修改webflux session属性 springcloud gateway 使用webflux做web框架之后,使用 org.springframework.web.server.session.WebSessionIdResolver 接口作为session的产生接口,默认为 cookie方式实现: org.springframework.web.server.session.CookieWebSessionIdResolver 重新申明 此接口即可进行一些参数配置 @B..

ywb201314的专栏 2156

基于Freertos与lwip移植FreeModbusTcp协议

基于FreeRTOS的N32G457VEL7之LWIP网络协议栈移植-优快云博客。

Dd_456456的博客 3238

SpringBoot项目搭建

SpringBoot项目搭建

私信可回答各种问题~ 1019

spring-webflux5 使用websocket

关于WebSocket 的几种高级用法

下半夜的风 3627

【使用FPGA实现MIPI DSI接口】——如何使用FPGA实现MIPI DSI接口?这是一个让许多开发者都感到困扰的问题。本文将介绍如何使用FPGA设计和实现...

【使用FPGA实现MIPI DSI接口】——如何使用FPGA实现MIPI DSI接口?MIPI DSI(移动产业处理器接口 - 显示串行接口)是一种用于在移动设备中传输视频数据的标准接口,它是目前大部分智能手机和平板电脑所采用的显示接口。首先,我们需要实现MIPI DSI的物理层接口。在实现MIPI DSI接口后,我们还需要编写驱动程序来控制MIPI DSI显示屏显示图像。这里只是提供了MIPI DSI接口的物理层代码示例,完整的MIPI DSI接口实现需要包括控制器和驱动程序等更多内容。

uote_e的博客 1995

session过期时间设置-jsp设置登录后登录失效时间

(1)在主页面或者公共页面中加入: session.setMaxInactiveInterval(900); 参数900单位是秒,即在没有活动15分钟后,session将失效。 这里要注意这个session设置的时间是根据服务器来计算的,而不是客户端。所以如果是在调试程序,应该是修改服务器端时间来测试,而不是客户端。 (2)也是比较通用的设置session失效时间的方法,就是在项...

iteye_9815的博客 692

Android Input——输入系统介绍(一)

Input 系统对于提供流畅、灵敏和一致的用户交互体验至关重要,它需要在不同的设备、场景和应用中保证输入事件的正确性、及时性和安全性。Android 输入系统是一个复杂但高效的设计,旨在处理来自各种输入设备(如触摸屏、键盘等)的用户交互,并将这些交互转换为应用程序可以理解和响应的形式。EventHub:输入系统的最底层,直接与硬件通信,监听和读取输入设备的原始事件。:从 EventHub 获取原始输入事件,对其进行解析,转化为更高层次的事件,以便上层应用或服务能够理解。

小旭的专栏 1708

【OpenFOAM】-olaFlow-算例10-wavemakerTank

采用 Flap和Piston两种方式的动网格进行造波

ou_no的博客 2166

Session存储方式和配置

来源:http://www.cnblogs.com/zhangkai2237/archive/2012/03/22/2410890.html Session又称为会话状态,是Web系统中最常用的状态,用于维护和当前浏览器实例相关的一些信息。我们控制用户去权限中经常用到Session来存储用户状态,这篇文章会讲下Session的存储方式、在web.config中如何配置Session、Sess

吴梅兰的专栏 1010

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

【转】session的存储方式和配置

转自:http://www.cnblogs.com/zhangkai2237/archive/2012/03/22/2410890.html     Session又称为会话状态,是Web系统中最常用的状态,用于维护和当前浏览器实例相关的一些信息。我们控制用户去权限中经常用到Session来存储用户状态,这篇文章会讲下Session的存储方式、在web.config中如何配置Session...

Hello world. 174

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

工业级电源路径管理:eFuse+MCU协同设计实战

电源路径管理(Power Path Management)是一种面向高可靠性嵌入式系统的动态供电控制技术,其核心在于通过可编程电子保险丝(eFuse)实现纳秒级电流监测与硬件级保护,并结合MCU进行毫秒级策略调度与故障诊断。相比传统MOSFET+比较器方案,eFuse具备精准限流、反向电流阻断、多路独立配置及I²C状态反馈等能力,显著提升系统抗浪涌、防倒灌与预测性维护水平。该技术广泛应用于PLC扩展模块、智能电表网关、轨道交通IO单元等需长期无人值守的工业场景,尤其适合24V直流供电环境下的上电冲击抑制与毫

weixin_34408717的博客 296

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

上一篇: Autofac全面解析系列(版本:3.5)–[依赖注入]
下一篇: 冒泡排序
.NET跨平台
博客等级 码龄15年 6066粉丝 738原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值