首页 新闻 会员 周边 捐助

把Session存储在独立的进程中 ,还是无法提高Session的生命周期

0
悬赏园豆:10 [已解决问题] 解决于 2012-04-02 20:55
3  把Session存储在独立的进程中
。要把Session存储在Windows服务进程中需要进行以下几个步骤。
n  第1步是打开状态服务。依次打开“控制面板”→“管理工具”→“服务”命令,找到ASP.NET状态服务一项,右键单击服务选择启动,双击服务把服务的启动类型设置为自动。
 
n  第2步,在system.web节点中加入:
<sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424"
stateNetworkTimeout="20"></sessionState>
n  1.在运行中输入regedit启动注册表编辑器。
n  2.依次打开HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/aspnet_state/Parameters节点,双击Port选项,如图12-5所示。
选择基数为十进制,然后输入一个端口号即可。stateNetworkTimeout属性表示从状态服务器请求Session数据最长的时间,n  第3步打开页面,单击“写入Session”按钮,系统会报错,如提示已经说得很清楚了,只有把对象标注为可序列化后才能在服务中进行存储。什么是序列化呢?序列化是指将对象实例的状态存储到存储媒体的过程。在此过程中,先将对象的公共字段和私有字段以及类的名称转换为字节流,然后再把字节流写入数据流。在随后对对象进行反序列化时,将创建出与原对象完全相同的副本。要使一个类可序列化,最简单的方法是使用 Serializable 属性对它进行标记。
[Serializable]
class MyUser
{
    public string sUserName;
    public int iAage;
    public override string ToString()
    {
        return string.Format("姓名:{0},年龄:{1}", sUserName, iAage);
    }
}
 
我将
stateNetworkTimeout="20"></sessionState> 更改为了 stateNetworkTimeout="920"></sessionState>  但是发现session寿命只有20分钟, 是不是因为我没有放在IIS下面测试,是因为放在VS2008环境下的原因呢
zhengyingcan的主页 zhengyingcan | 初学一级 | 园豆:12
提问于:2012-04-01 14:20
< >
分享
最佳答案
0

<sessionState mode="StateServer" timeout="20" stateNetworkTimeout="网络状态超时时间"></sessionState>有两个是设置时间,timeout才是要设置的寿命时间,默认是20分钟。你改一下这个试试。

收获园豆:5
智伟 | 菜鸟二级 |园豆:266 | 2012-04-01 23:17
其他回答(2)
0

建议在IIS中测试一下

dudu | 园豆:29622 (高人七级) | 2012-04-01 15:49
0

 <sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" timeout="300"/>

收获园豆:5
happydaily | 园豆:260 (菜鸟二级) | 2012-04-02 10:35
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册