asp.net的session的模式

在开发中通过webconfig配置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模式

 

参考:https://www.cnblogs.com/joean/p/4406348.html

asp.net的session的模式

上一篇:我的Android进阶之旅------>解决AES加密报错:java.security.InvalidKeyException: Unsupported key size: 18 bytes


下一篇:Java实现 LeetCode 773 滑动谜题(BFS)