Session的配置

本文介绍了两种进程外Session存储机制,一种是通过aspnet_state.exe服务实现的状态服务器存储,另一种是利用SQL Server进行Session数据的持久化存储。两种方法均可在IIS或ASP.NET服务意外关闭时保持会话状态。

人人都知道怎么去使用session,但是初学者,尤其是自学的学生可能对于进程外的Session不甚了解,今天我就花半个小时做个简单的示范。

    首先,session其虽然是基于 cookie的,同时只对本次会话来产生效果,(原理很简单,就是字典内保存一个字典,外层字典的key也就是asp_netsessionId是 由.NET自动分配的并保存到只对本次会话有效的cookie中,我们的工作只是负责内部我们需要的字典的内容,并有.NET自动分配一块区域保存起来, 当然这个是有一定的时效性的,模拟代码可以看看资料,或者反编译下看看,很简单,这里就不说了)但是有时候我们就会发现默认的session存储方式,可 能造成数据的丢失,虽然他的存储类型是object,但是我们要是存储大量的数据就经常出现数据的丢失。

    下面我介绍两种人人都知道,我也刚知道的配置手段。这两种都是进程外的session机制,可以在IIS或ASP.NET服务意外关闭时继续保持状态.

1.使用aspnet_state.exe

步骤:对于win7不用找,直接打开服务,其一般是已经注册了的。

开始---运行---services.msc 找到

然后打开它,之后我们在web.config内配置Session状态

?
 
1 <sessionState mode="StateServer" stateConnectionString="tcpip=localhost:42424"/
?
 

 42424是默认端口号(可以修改),同时默认的也是本机访问,要是需要可以在注册表配置,以满足远程服务器的。

然后AllowRemoteConnection值修改为1,0代表本机。之后字需要修改web.config中的IP即可。

现在我们来测试一下效果:

我前面的就不在演示了,这里演示一下,获取session后关闭了服务器,之后再打开,我就可以看到

多次刷新session任然保持存在。

2.使用SQLServer保存

微软提供了2中保存方式(附带创建脚本)

临时储存区:InstallSqlState.sql & UninstallSqlState.sql
永久储存区:InstallPersistSqlState.sql & UninstallPersistSqlState.sql

步骤:我们在.NET安装目录中打开,出现


之后配置一下web.config,

 

?
<sessionState mode= "SQLServer" sqlConnectionString= "...." ></sessionState>

 

 我们打开SSMS.

运行我们上面官方提供的脚本,这里拿出一个临时储存区的脚本运行

临时脚本

 

虽然会报错,但是不用管,没什么影响,之后会出现一个数据库

 

怎么测试就不说了,都是一样的,还有就是永久存储区的建立都是一样的, 只是内部会保存具体的信息,同时我们可以配合SQL代理

 作业来自动删除失效的session对象.

这里不同进程间的通讯涉及到序列化问题,这里就不说了,里面有就很容易看出来。

好了,今天到此结束,休息一会去了。

### 如何在SecureCRT中导出Session配置 要在SecureCRT中导出Session配置,可以通过以下方式实现: #### 方法一:手动备份SecureCRT的配置文件 SecureCRT的所有会话(Sessions)及相关配置通常存储在一个特定的目录下。找到该目录并将其内的所有文件打包即可完成备份。 1. 找到SecureCRT安装目录下的配置文件路径。对于Windows系统,默认路径通常是 `C:\Users\<用户名>\AppData\Roaming\VanDyke\Config`[^1]。 2. 进入上述路径并将其中的所有文件和子文件夹复制到外部存储设备或其他安全位置。 3. 如果需要恢复这些配置,只需将备份好的文件解压至原始路径,并重启SecureCRT即可生效。 #### 方法二:通过脚本批量导出会话配置 如果存在大量会话配置,可以借助脚本来简化导出过程。以下是基于VBS脚本的一个简单示例,用于提取所有已定义的会话名称及其对应的IP地址等信息。 ```vbscript ' 创建一个新的VBScript来获取SecureCRT中的所有会话信息 Dim crtObj, sessionsList, sessionName, filePath Set crtObj = CreateObject("SecureCRTOLE.Application") filePath = "C:\sessions_export.txt" OpenFileForWriting filePath ' 初始化日志文件 For Each session In crtObj.Config.SessionList WriteToFile filePath, session.Name & vbTab & GetHostFromAlias(session.Alias) Next Sub OpenFileForWriting(path) Dim fso, file Set fso = CreateObject("Scripting.FileSystemObject") Set file = fso.CreateTextFile(path, True) End Sub Function WriteToFile(path, content) Dim fso, file Set fso = CreateObject("Scripting.FileSystemObject") Set file = fso.OpenTextFile(path, 8, True) ' ForAppending = 8 file.WriteLine(content) file.Close End Function Function GetHostFromAlias(alias) If alias <> "" Then GetHostFromAlias = Split(Split(alias, ",")(0), "=")(1) Else GetHostFromAlias = "" End If End Function ``` 运行以上脚本后,所有的会话详情会被记录到指定的日志文件中以便后续查阅或迁移[^2]。 #### 方法三:调整设置防止意外丢失数据 为了进一步保护现有的Session配置,在日常使用过程中还可以采取一些预防措施: - **启用反空闲功能**:定期向远程主机发送保持活动状态的数据包以防因超时而被强制登出[^3]; - **增加卷屏缓冲区大小**:提高终端仿真器能够记住的历史行数上限有助于更方便地回顾长时间对话内容[^4]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值