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环境下的原因呢