在应用程序的web.config文件中,将<sessionstate>元素mode属性设置为stateserver,它是不是就没有办法进入Global文件的Session_End事件了?
解决方案 »
- asp.net里怎么实现非回传、非Ajax级联
- 使用Form权限验证,但是登陆页面内中的图片居然都不显示
- js获取CuteEditor的值
- 自定义控件里面嵌iframe的问题
- 如何在 button 提交时,使其状态为 Disable?
- 数据库连接错误!提示"“FillDataSet”不是“System.Data.OleDb.OleDbCommand”的成员。"怎么回事???
- 关于事务问题?
- 关于get和post,很有趣的一个问题,和一个做java的同学讨论了半天
- asp.net2010(C#)中treeview插入子节点
- 碰到了个更新的问题
- 类库问题
- 请问:用户控件或自定义控件怎么调用数据库?
参考
ASP.NET Session State FAQ
http://www.eggheadcafe.com/articles/20021016.asp
或者说我怎么知道session已经过期了?
参见
http://www.cnblogs.com/anders/archive/2005/03/30/32744.html将服务器Session信息存储在SQL Server中 首先,还是让我们来做一些准备工作。启动SQL Server和SQL Server代理服务。在SQL Server中执行一个叫做InstallSqlState.sql的脚本文件。这个脚本文件将在SQL Server中创建一个用来专门存储Session信息的数据库,及一个维护Session信息数据库的SQL Server代理作业。我们可以在以下路径中找到那个文件:
程序代码:
[system drive]\winnt\Microsoft.NET\Framework\[version]\
然后打开查询分析器,连接到SQL Server服务器,打开刚才的那个文件并且执行。稍等片刻,数据库及作业就建立好了。这时,你可以打开企业管理器,看到新增了一个叫ASPState的数据库。但是这个数据库中只是些存储过程,没有用户表。实际上Session信息是存储在了tempdb数据库的ASPStateTempSessions表中的,另外一个ASPStateTempApplications表存储了ASP中Application对象信息。这两个表也是刚才的那个脚本建立的。另外查看管理->SQL Server代理->作业,发现也多了一个叫做ASPState_Job_DeleteExpiredSessions的作业,这个作业实际上就是每分钟去ASPStateTempSessions表中删除过期的Session信息的。 接着,我们返回到Web.config文件,修改mode的值改为SQLServer。注意,还要同时修改sqlConnectionString的值,格式为:
程序代码:
sqlConnectionString="data source=localhost; Integrated Security=SSPI;"
其中data source是指SQL Server服务器的IP地址,如果SQL Server与IIS是一台机子,写127.0.0.1就行了。Integrated Security=SSPI的意思是使用Windows集成身份验证,这样,访问数据库将以ASP.NET的身份进行,通过如此配置,能够获得比使用userid=sa;password=口令的SQL Server验证方式更好的安全性。当然,如果SQL Server运行于另一台计算机上,你可能会需要通过Active Directory域的方式来维护两边验证的一致性。 同样,让我们做个试验。向SessionState.aspx中添加Session信息,这时发现Session信息已经存在SQL Server中了,即使你重起计算机,刚才的Session信息也不会丢失。现在,你已经完全看见了Session信息到底是什么样子的了,而且又是存储在SQL Server中的,能干什么就看你的发挥了
那么应该怎么办呢?