ASP.NET之Session&Cookie

一、前言

  在开发中通过webconfig配置session的时长,了解到session是有多种模式的,所以总结一下。

二、session定义

  session是web中的会话,因为http是不保存状态的无状态协议,所以浏览器请求服务器产生响应,如果同一个浏览器再一次请求,服务器不知道请求是谁,没有保存状态。通过使用session会话的机制,在第一次请求的时候服务器生成唯一的session信息返回给浏览器,浏览器再次访问时候带上session信息在服务器进行查找会话,实现有状态的响应,其中session可以保持在浏览器的cookie中达到保存标识的作用。

三、session的模式

  1、InProc(默认类型,存储在内存中)

  在webconfig中进行配置<sessionState mode="InProc" timeout="30" />其中timeout是session的过期时间,该模式也是默认模式,其过期时间默认20分钟,session存储在内存中。

  优缺点:最快,最通用的默认形式,对象不需要进行序列化和反序列化存储(内存的形式),IIS重启或者工作进行被回收会失去session,session数据过大或者过多,影响内存的性能。

   2、StateServer(asp.net_state.exe服务中)

  使用一个独立的Windows服务提供session服务,独立于IIS,可以使用单独一台服务器。首先要开启asp.net_state.exe服务,并且在注册表中设置为自启动。然后在webconfig中进行配置<sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" stateNetworkTimeout="40" />。

  优缺点:数据可以在不同应用程序上共享,性能瓶颈,数据要序列化和反序列化,两个不同的进程,进行通信读写消耗性能。

  3、SQLServer(存储在sql server数据库中)

  session保存在数据库中,通过在sqlserver创建session存储的数据库表,创建session是会在表中保存一条session的数据,过期时间等。

  通过命令在数据库创建session数据库C:\Windows\Microsoft.NET\Framework\v4.0.30319\ aspnet_regsql -S DESKTOP-51KBM4A\SA -U sa -P 123456 -ssadd -sstype p
在webconfig中进行配置<sessionState mode="SQLServer" sqlConnectionString="data source=DESKTOP-51KBM4A\SA;user id=sa;password=123456" cookieless="false" timeout="20"></sessionState>

  优缺点:session不受IIS重启的影响,不会因为IIS重启失去session,最可靠和安全的session模式,数据共享,对象的序列化和反序列化影响性能。

  4、Off(关闭session )
  <sessionState mode="Off"/>

  5、自定义session

posted @   tuqunfu  阅读(90)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示