首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 服务器 > 应用服务器 >

Session丢失有关问题解决方案

2012-02-21 
Session丢失问题解决方案作者未知Session丢失已经是一种习以为常的问题了,在自己也了解一些如何解决的问题

Session丢失问题解决方案
作者未知

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

作者:     来源:     (责任编辑:webjx)
----------------------收集之二-----------------------------
在Windows2003的服务器中的IIS6加入了应用程序池来回收一些无用的进程的功能,当由于网站程序的错误或访问量太多的导致的应用程序池会自动回收该进程,防止网站进入“死机”状态,而这时候的应用程序池的回收就会导致session变量被清除,就出现了session变量不见的现象。  
为了解决这种在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 "  
/>  
+   注:只适用于支持asp.net的用户。  


转载http://www.webasp.net/article/29/28038.htm

[解决办法]
学习并接分!
[解决办法]

[解决办法]
多谢能转来分享!


---------------------------------------------------
中国福网是国内唯一一家独家运营三家机房的IDC,专业为企事业单位提供高速、稳定、安全的服务器租用,托管,带宽租用,机柜租用。电信网通任你选!WW.CHINAFU.COM QQ1127080

[解决办法]
感谢楼主的分享。十分感谢,我正在找这方面的知识

热点排行