前言
.netframework的网站。经常刷新,频繁登录倒是其次,查询条件频繁选择倒是很烦人。
设置IIS连接池效果不是很理想。
尝试
web.config 设置
<sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
cookieless="false" timeout="300" />
测试后不生效
学习
了解sessionState
<system.web>
<sessionState
mode="InProc" <!-- 存储模式 -->
cookieless="UseCookies" <!-- 会话ID传递方式 -->
timeout="20" <!-- 超时时间(分钟) -->
stateConnectionString="tcpip=127.0.0.1:42424" <!-- StateServer模式连接字符串 -->
sqlConnectionString="data source=.\SQLEXPRESS;..." <!-- SQLServer模式连接字符串 -->
customProvider="..." <!-- 自定义提供程序 -->
/>
</system.web>
InProc(默认) 保存在IIS的内存中。
StateServer 保存在服务进程(如 ASP.NET State Service)中。
SQLServer 据存储在 SQL Server 数据库中。
我的需求其实不复杂,单服务器站点,能维持四小时办公不重复登录就行。使用InPro效果不太好,会出现网络中断导致重登。SQLServer,又没什么必要。
虽然cookie、redis等也能解决,但封装、自定义太多的老项目,并不想改动代码。
解决办法
采用StateServer:
<system.web>
<sessionState
mode="StateServer"
stateConnectionString="tcpip=127.0.0.1:42424"
timeout="300" <!-- 超时时间(分钟) -->
/>
</system.web>
1、查看服务,ASP.NET State Service是否处于自启动。
2、防火墙入网规则,打开42424端口。
重启连接池
测试成功,session能维持到吃午饭了。