服务器

您的位置:首页 > 网站专题 > 服务器 > 详细内容>

Session服务器配置指南与使用经验

2010-09-23 15:01 作者: [大 中 小]

一.摘要

所有Web程序都会使用Session保存数据. 使用独立的Session可以解决负载均衡场景中的Session共享问题.本文介绍.NET平台下建立Session的几种办法, 并介绍在使用Session时的各种经验和技巧.

二.关于Session,SessionID和Cookies

Session数据保存在端, 但是每一个客户端都需要保存一个SessionID, SessionID保存在Cookies中, 关闭浏览器时过期.

在向发送的HTTP请求中会包含SessionID, 端根据SessionID获取获取此用户的Session信息.

很多初级开发人员不知道SessionID和Cookies的关系, 所以常常认为两者没有联系. 这是不正确的. 正是因为SessionID保存在Cookies中, 所以在我们保存Cookies的时候,一定要注意不要因为Cookies的大小和个数问题而导致SessionID对象. 在我们的程序中, 对SessionID的Cookies有特殊的处理:

//省略掉中间的代码部分.只保留备份SessionID和找回SessionID的逻辑

三.搭建Session的几种方式

将Session保存在独立的中可以实现在多台Web之间共享Session.虽然我们也可以自己开发Session存储系统, 但是使用ASP.NET自带的存储机制将更加便捷.

.NET提供了5种保存Seission的方式:

我们可以在Web.Config中配置程序使用的Session存储方式.默认情况下是InProc, 即保存在IIS进程中. 关于Off, InProc和Customer本文不做讲解. 相关文章大家都可以在网上搜索到.

下面主要讲解 StateServer 和 SQLServer 的应用.

四.使用 StateServer 模式搭建Session

(1)端配置

1.启动 Asp.net State service服务.(这个服务默认的状态为手动.修改为自动并启动.)

2.修改注册表: [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\aspnet_state\Parameters]

设置 AllowRemoteConnection = 1 , 设置 Port = 42424 (十进制,默认即为42424)

Port是服务的端口号

AllowRemoteConnection 表示是否允许其他机器连接,0为仅能本机使用,1为可以供其他机器使用.

(2)客户端设置

在Web应用程序的Web.Config中, 我们需要修改 / 的节点.如果没有

没有则添加(默认使用的是InProc方式)

mode="StateServer"

stateConnectionString="tcpip=ip:42424"

cookieless="false"

timeout="60"/>

上面的参数我们可以根据需要修改.