随笔 - 95  文章 - 0  评论 - 47  阅读 - 84万 

 

SessionSate设置

sessionState设置为我们asp.net中的session配置方式
<sessionState mode="InProc" cookieless="false" timeout="120"/>

说明mode设置方式    timeout超时时间 (分钟)  cookieless是否启用cookie

mode的几种模式:Off、InProc、StateServer及SqlServer

Off模式

关闭模式,不需要使用Session,一般不用

<sessionState mode="Off"></sessionState>

InProc模式(默认)

<sessionState mode="InProc" cookieless="false" timeout="120"/>

模式为InProc模式是iis默认方式,Session直接存储在IIS进程中,但session易丢失;

优点:获取session状态的速度快,session状态直接存储在iis的进程中

缺点:易丢失;

ASP.NET进程(aspnet_wp.exe)、IIS进程(w3wp.exe)默认的20分钟重启应用程序;缓冲池填满后重启;进程保护措施重启;等都会导致进程重启,从而导致session丢失;

在开发的时候,对应用有一点修改,就会导致应用的重启,这时候如果使用InProc模式 ,那么每次都需要重新登录,比较浪费时间.建议使用StateServer模式。并在iis里面设置超时时间长一些

StateServer模式(推荐方式)

<sessionState mode="StateServer" cookieless="false" timeout="120" stateConnectionString="tcpip=127.0.0.1:42424" />

mode设置为"StateServer"时,Session 存储在单独的内存缓冲区中,再由单独一台服务器上运行的ASP.NET State Service(aspnet_state.exe)来控制这个缓冲区。

如果 stateConnectionString中配置的是127.0.0.1则为服务器本机;

注意:需要启动ASP.net State service 状态服务

优点:session状态单独存储在一个进程中,不会因为iis或者应用的重启而丢失状态。

缺点:

a、由于是两个不同的进程,获取Session数据比InProc慢;

b、Session数据存储在内存中,重启ASP.NET State Service服务,Session数据将丢失。

    以上设置的ASP.NET State Service在127.0.0.1的42424端口(默认端口)上运行,要在服务器上改变端口,可编辑HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters注册表项中的Port值。(打开注册表方式:运行 regedit)

   如果stateConnectionString的值不是127.0.0.1或者localhost等代表本地地址的值,需要修改注册表:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state \Parameters 节点 → 将 AllowRemoteConnection 的键值设置成“1”(1 为允许远程电脑的连接,0 代表禁止)→ 设置 Port (端口号) 

SqlServer模式

mode设置为"SqlServer"时,Session存储在SQL Server数据库中持久化保持,ASP.NET尝试将会话数据存储到由sqlConnectionString属性(其中包含数据源以及登录服务器所需的安全凭证)指定的SQL Server中。

 

参照:

https://www.cnblogs.com/libingql/p/4675752.html

https://blog.csdn.net/LeehomeYU/article/details/74909611?utm_source=blogxgwz5

posted on   yxtic  阅读(3382)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统

喜欢请打赏

扫描二维码打赏

支付宝打赏

点击右上角即可分享
微信分享提示