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

打开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慢一些,毕竟是两个不同的进程。 

 

另:

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帐号,或者具有同等权限的其他帐号。

posted @ 2014-09-04 10:49  emmaKang  阅读(1414)  评论(0编辑  收藏  举报