将Session存入SQLServer实现夸站点访问

本文详细介绍了如何通过将Session存储在SQLServer中,实现多个ASP.NET站点之间的会话共享。关键在于理解ASPStateTempSessions表的结构,并通过调整AppName或共享Cookie来确保不同站点能使用相同的SessionID。配置Web.config的sessionState节点,设置相同的数据库连接和忽略AppName,或者通过设置Cookie的Domain属性,都能实现这一目标。同时,文中还提到了定期清理过期Session的作业ASPState_Job_DeleteExpiredSessions的重要性。
摘要由CSDN通过智能技术生成

(1)建立存放 Session 的 DataBase
打开Visual Studio 命令提示工具执行下面的命令,此命令会创建存储Session的数据库ASPState、清除过期Session的作业,以及相应的一些存储过程。
D:/Microsoft Visual Studio 9.0/VC>aspnet_regsql -S 192.168.4.188 -U sa -P dianji
an@2010 -ssadd -sstype p

会话数据保存在指定的SQLServer数据库中,会话数据通过SessionID进行查找,理论上只需要使多个站点共享同一会话数据库即可共享会 话数据,确定了思路便好办。多个站点共享统一会话数据库在.NET下是很容易的事情,只需要在WEB.CONFIG里配置sessionState节点指 定会话存储模式以及相同的会话数据库即可。事情没有这么简单,不同的站点其SessionID是不同的,就算SessionID相同了,保存在会话数据库 中的实际SessionID的值也不只是网站生成的SessionID,而是在SessionID后加上了站点的AppName,因此即使各个站点共享了 会话数据库也不能共享会话数据。打开会话数据表ASPStateTempSessions中的记录,可以发现如下几个数据

ASPStateTempSessions各个字段的意义如下:

表1 ASPStateTempSessions表

类 型

描 述

SessionId

char(88)

索引字段,它表示会话ID

Created

DateTime

指出会话被创建的时间。默认值为当前时间

Expires

DateTime

指出会话将到期的时间。该值一般等于会话状态的创建时间加上Timeout中指定的分钟数。注意,Created指会话的创建时间,而 Expires把分钟数加到第一个数据项被添加到会话状态的时间

LockDate

DateTime

指出会话被锁定以添加最后一个数据项的时间。该值表示为当前的UTC(Universal Time Coordinate)时间

LockDateLocal

DateTime

与LockDate一样,但是它只表示系统的本地时间。ASP.NET 1.x不支持该列

LockCookie

int

指出该会话被锁定的次数——即,访问次数

Timeout

int

指出会话的超时时间(以分为单位)

Locked

bit

指出会话当前没有被锁定

SessionItemShort

VarBinary(7000)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值