Session丢失——解决方案
先抄下别人的作业(原帖:http://www.cnblogs.com/zhc088/archive/2011/07/24/2115497.html)
Session丢失已经是一种习以为常的问题了,在自己也了解一些如何解决的问题,但是也一直没有机会去用,现在由于新的项目要在B/S下开发,所以不得不让我考虑Session的问题。
解决session丢失的问题有两种方法:1)将session保存在一台sate server中。2)将session保存在sql server中。我们使用的数据库是oracle,不想再装一个数据库,所以用了第一种方法。
首先根据网上查的资料对webconfig文件中session部分进行修改。如下:
<sessionState
mode="StateServer"
cookieless="false"
timeout="240"
stateConnectionString="tcpip=10.164.222.122:42424"
stateNetworkTimeout="14400"
/>
<machineKey
validationKey="78AE3850338BFADCE59D8DDF58C9E4518E7510149C46142D7AAD7F1AD49D95D4"
decryptionKey="5FC88DFC24EA123C"
validation="SHA1"
/>
然后再在10.164.222.122 这台电脑上的asp.net state server 服务启动
这样基本上就行了。体验一下。
我用了一个测试程序,在3个小时以后session仍然可用,更绝的是我的电脑都重起了,在其它电脑上打开的网页中session仍然可用。一番体验以后,感觉还真不错。
.NET Framework 常规参考
<sessionState> 元素
为当前应用程序配置会话状态设置。
<configuration>
<system.web>
<sessionState>
<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 指定在哪里存储会话状态。
Off 指示会话状态未启用。
InProc 指示在本地存储会话状态。
StateServer 指示在远程计算机上存储会话状态。
SQLServer 指示在 SQL Server 上存储会话状态。
可选属性
属性 选项 说明
cookieless 指定不具有 Cookie 的会话是否应用于标识客户端会话。
true 指示应使用不具有 Cookie 的会话。
false 指示不应使用没有 Cookie 的会话。默认值为 false。
timeout 指定在放弃一个会话前该会话可以处于空闲状态的分钟数。默认值为 20。
stateConnectionString 指定远程存储会话状态的服务器名称和端口。例如“tcpip=127.0.0.1:42424”。当 mode 为 StateServer 时该属性是必需的。
sqlConnectionString 为 SQL Server 指定连接字符串。例如“data source=localhost;Integrated Security=SSPI;Initial Catalog=northwind”。当 mode 为 SQLServer 时该属性是必需的。
stateNetworkTimeout 在使用 StateServer 模式存储会话状态时,指定在放弃会话之前 Web 服务器和状态服务器之间的 TCP/IP 网络连接空闲的时间(以秒为单位)。默认值为 10。
备注
使用 StateServer 模式
确保运行 ASP.NET 状态服务的服务器是要存储会话状态信息的远程服务器。该服务与 ASP.NET 一起安装,其默认位置为 <驱动器>:\systemroot\Microsoft.NET\Framework\version \aspnet_state.exe。
在应用程序的 Web.config 文件中,设置 mode=StateServer 并设置 stateConnectionString 属性。例如,stateConnectionString="tcpip=sarath:42424"。
使用 SQLServer 模式
在运行 SQL Server 的计算机(它将存储会话状态)上运行 InstallSqlState.sql(默认的安装位置为 <驱动器>:\systemroot\Microsoft.NET\Framework\version)。这将创建一个名为 ASPState 的数据库,该数据库具有新的存储过程并且在 TempDB 数据库中具有 ASPStateTempApplications 表和 ASPStateTempSessions 表。
在应用程序的 Web.config 文件中,设置 mode=SQLServer 并设置 sqlConnectionString 属性。例如,sqlConnectionString="data source=localhost;Integrated Security=SSPI;Initial Catalog=northwind"。
示例
以下示例指定若干会话状态配置设置。
<configuration>
<system.web>
<sessionState mode="InProc"
cookieless="true"
timeout="20"/>
</sessionState>
</system.web>
</configuration>
要求
包含于:<system.web>
Web 平台:IIS 5.0、IIS 5.1、IIS 6.0
配置文件:Machine.config、Web.config
配置节处理程序:System.Web.SessionState.SessionStateSectionHandler
请参见
ASP.NET 配置 | ASP.NET 设置架构 | SessionStateModule
为了解决这种在Windows2003下才出现的问题,我们在服务端起动ASP.NET State Service服务,并且在系统的machine.config做了一些改动。现在默认的情况下会话状态mode是StateServer。如果您的网站根目录下也配有一个web.config配置文件,请把mode="InProc"改成mode="StateServer",如下代码,就可以防止 session变量的丢失:
<sessionState
mode="StateServer"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="data source=127.0.0.1;Integrated Security=SSPI"
cookieless="false"
timeout="30"
/>

Session丢失——解决方案的更多相关文章
- Vue+elementui +Springboot session丢失解决方案
前后端分离项目 由于端口不一致会出现跨域问题 解决跨域以后又会出现前后端sessionID不一致 首先跨域问题 跨域可以在前端配置代理 proxyTable: { '/': { / ...
- feign调用接口session丢失解决方案
微服务使用feign相互之间调用时,因为feign默认不传输Header,存在session丢失的问题.例如,使用Feign调用某个远程API,这个远程API需要传递一个鉴权信息,我们可以把cooki ...
- ASP.NET 状态服务 及 session丢失问题解决方案总结
ASP.NET2.0系统时,在程序中做删除或创建文件操作时,出现session丢失问题.采用了如下方法:1.asp.net Session的实现:asp.net的Session是基于HttpModul ...
- [转]ASP.NET 状态服务 及 session丢失问题解决方案总结
转自[http://blog.csdn.net/high_mount/archive/2007/05/09/1601854.aspx] 最近在开发一ASP.NET2.0系统时,在程序中做删除或创建文件 ...
- ASP.NET状态服务及session丢失问题解决方案总结
原文:ASP.NET状态服务及session丢失问题解决方案总结[转载] asp.net Session的实现: asp.net的Session是基于HttpModule技术做的,HttpModule ...
- session 丢失和解决方案
在ASP.NET的开发中,总遇到Session丢失.最常见的情况是当用户登录后将用户信息保存在Session中例如Session["user"]=user;在其后的页面中检查Ses ...
- ASP.NET Session丢失的解决方案
正常操作情况下会有ASP.NET Session丢失的情况出现.因为程序是在不停的被操作,排除Session超时的可能.另外,Session超时时间被设定成60分钟,不会这么快就超时的.现在我就把原因 ...
- ASP.NET Session丢失问题原因及解决方案
正常操作情况下会有ASP.NET Session丢失的情况出现.因为程序是在不停的被操作,排除Session超时的可能.另外,Session超时时间被设定成60分钟,不会这么快就超时的. ASP.NE ...
- Session丢失原因与解决方案
win2003 server下的IIS6默认设置下对每个运行在默认应用池中的工作者进程都会经过20多个小时后自动回收该进程, 造成保存在该进程中的session丢失. 因为Session,Appl ...
随机推荐
- BZOJ1042:[HAOI2008]硬币购物(DP,容斥)
Description 硬币购物一共有4种硬币.面值分别为c1,c2,c3,c4.某人去商店买东西,去了tot次.每次带di枚ci硬币,买si的价值的东西.请问每次有多少种付款方法. Input 第一 ...
- [19/04/17-星期三] Java的动态性_反射(Reflection)机制
一.前言 动态语言:程序运行时,可以改变程序结构或变量类型.典型的代表:Python,ruby,JavaScript 如JavaScript代码: function test(){ var s=&qu ...
- 新版剑指offer14 剪绳子
int maxProduct(int length){ ) ; ) ; ) ; ; == ) numof3 -= ; )/; ,numof3))*(,numof2)); }
- 日期字符串解析--SimpleDateFormat严格限制日期转换setLenient(false)
输入“33/12/2011”,用SimpleDateFormat parse()方法,转化为Date(2012,01,02).这样处理相当“33/12/2011”是正常输入,如果需要"33/ ...
- Spring @Value 默认值
@Value(value = "${etl.maxthreadcount:3}") private long MaxThreadCount;
- centos 清除yum缓存
No package nginx available. yum makecache yum install epel-release yum install nginx
- 【洛谷P2680】运输计划
题目链接 题目大意: 一棵\(n\)个点的带边权的数,给定\(m\)条树上两点间的路径,现在你可以让树上任意一条边的权值变为零, 问如何选边使得\(m\)条路径中边权和最大的路径的边权和最小 \(\m ...
- LoadRunner调用java函数测试oracle
LoadRunner调用java函数测试oracle 测试oracle的方法有很多,可以使用loadrunner的oracle协议直接调用oracle进行测试,也可以调用开发的java程序对oracl ...
- TabActivity 、fragemnt+fragment 和 Fragment+Viewpager 优缺点
1 TabActivity : 1 过时了 . 2 activity . 是作为android的四大组件... 重量级的家伙 ViewGroup : 特别麻 ...
- 字符型设备驱动程序-first-printf以及点亮LED灯(四)
怎么样 把 写的 代码 和 编译 放到 开发板上 去执行? 2017年5月22日16:34:13 需要 自己 编译 Linux 内核.. 需要 以下 几个 条件: 1.正常运行 Linux 的 开发 ...