网站Session登陆,解决网站经常需要重新登录的问题

原因:session是工作在你的应用程序进程中的。asp.net进程、iis往往会在20分钟之后重启相关的应用程序,缓冲池满了(例如100个之后)也会重启,各种进程保护措施都会随时重新启动,因此InProc方式丢失session是很正常的事。csdn上明确告诉了这种模式只能保存“易失的、暂时的 ”变量,这是cache没有之前的一种解决方案。而长期保持的数据就要保存在外部数据源中。状态服务器就是一种进程外的数据源。

配置项:打开Web.config,将sessionState mode="InProc"换成sessionState mode="StateServer" 

session mode 的InProc 与StateServer 的比较

InProc 默认参数

允许“无Cookie”的会话,以及在服务器之外存储会话数据,会话状态要由ASP.NET存储到内存中

优点:获取session状态的速度快,session状态直接存储在iis的进程中。 
缺点:易丢失,经常需要重新登录 

StateServer 

将会话数据存储到单独的内存缓冲区中,再由单独一台机器上运行的Windows服务来控制这个缓冲区。

注意:需要启动“ASP.NET State Service“服务

方法:start->run->输入 services.msc 回车-> 找到ASP.NET State Service 启动

优点:session状态单独存储在一个进程中,不会因为iis或者应用的重启而丢失状态 
缺点:获取session状态的速度比InProc慢一些,毕竟是两个不同的进程。 

注:使用StateServer模式的时候 
1、要开启“ASP.NET State Service”服务(设为“自动”) 

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

3、session中存储非序列化的对象,如果违反会抛出 [color=red]无法序列化会话状态。在“StateServer”或“SQLServer”模式下,ASP.NET 将序列化会话状态对象,因此不允许使用无法序列化的对象或 MarshalByRef 对象。如果自定义会话状态存储在“Custom”模式下执行了类似的序列化,则适用同样的限制。[/color]这样的异常。如果向session存储自定义的对象,那么该对象的类上一定要加上[Serializable]注释。

另:

ASP.NET还允许将会话数据存储到一个数据库服务器中,方法是将mode属性变成SqlServer。 
在这种情况下,ASP.NET尝试将会话数据存储到由sqlConnectionString属性(其中包含数据源以及登录服

务器所需的安全凭证)指定的SQL Server中。
为了用恰当的数据库对象来配置SQL erver,管理员还需要创建ASPState数据库,
方法是运行WinDir\Microsoft.Net\Framework\Version文件夹中的InstallSqlState.sql脚本(WinDir是服务

器的Windows文件夹,而Version是你使用的.NET框架版本的安装文件夹)。
要配置SQL服务器,可以在命令行中运行SQL Server 提供的命令行工具osql.exe

osql -S [ server name] -U [user] -P [password] -i InstallSqlState.sql
例如
osql -S (local)\NetSDK -U sa -P "" -i InstallSqlState.sql

在这里用户名必须是SQL服务器上的sa帐号,或者具有同等权限的其他帐号。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值