博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ASP.NET中Session的sessionState 4种mode模式
阅读量:7062 次
发布时间:2019-06-28

本文共 2114 字,大约阅读时间需要 7 分钟。

1. sessionState的4种mode模式

在ASP.NET中Session的sessionState的4中mode模式:Off、InProc、StateServer及SqlServer。

2. Off模式

关闭模式,即不需要使用Session。

单个页面关闭Session:

<%@ Page EnableSessionState="false" %>

3. InProc模式(缺省模式)

优点:获取session状态的速度快

  缺点:易丢失

  mode为InProc可能造成Session丢失的情况:

  1>. ASP.NET进程(aspnet_wp.exe)、IIS进程(w3wp.exe)默认的20分钟重启应用程序;

  2>. 缓冲池填满后重启;

  3>. 进程保护措施重启。

4. StateServer模式

mode设置为"StateServer"时,Session 存储在单独的内存缓冲区中,再由单独一台服务器上运行的ASP.NET State Service(aspnet_state.exe)来控制这个缓冲区。

  优点:session状态单独存储在一个进程中,不会因为iis或者应用的重启而丢失状态。

  缺点:

  1>. 由于是两个不同的进程,获取Session数据比InProc慢;

  2>. Session数据存储在内存中,重启ASP.NET State Service服务,Session数据将丢失。

以上设置的ASP.NET State Service在127.0.0.1的42424端口(默认端口)上运行,要在服务器上改变端口,可编辑HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters注册表项中的Port值。(打开注册表方式:运行 regedit)

  mode设置为"StateServer"需要注意:

  1>. 启动ASP.NET State Service;

  2>. 如果stateConnectionString的值不是127.0.0.1或者localhost等代表本地地址的值,需要修改注册表:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state \Parameters 节点 → 将 AllowRemoteConnection 的键值设置成“1”(1 为允许远程电脑的连接,0 代表禁止)→ 设置 Port (端口号) 

5. SqlServer模式

mode设置为"SqlServer"时,Session存储在SQL Server数据库中持久化保持,ASP.NET尝试将会话数据存储到由sqlConnectionString属性(其中包含数据源以及登录服务器所需的安全凭证)指定的SQL Server中。可应用场景:网络负载均衡(NLB)环境。

  设置SqlServer模式步骤:

  1>. 配置SQL erver创建ASPState数据库

  创建ASPState数据库,运行C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallSqlState.sql,可以通过SQL查询分析器来执行语句,也可以使用sqlcmd来执行。

sqlcmd -S [server name] -U [user] -P [password] -i C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallSqlState.sql

此时SQLServer会创建数据库ASPState,但是没有表。

  若创建ASPState数据库后要删除,可以运行C:\Windows\Microsoft.NET\Framework\v4.0.30319\UninstallSqlState.sql,但要先停止w3svc进程。

net stop w3svc

  2>. ASPState创建表

aspnet_regsql.exe  -ssadd -sstype p -S [server name] -U [user] -P [password]

  运行cmd:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regsql.exe  -ssadd -sstype p -S (local) -U sa -P '1'

  此时数据库中创建两张表:ASPStateTempApplications、ASPStateTempSessions。

    3>. 设置sessionState

由于数据不存储在本地内存,存储Session状态的对象需要进行序列化和反序列化,以便通过网络传给数据库服务器,以及从数据库服务器传回。

 

转:http://www.cnblogs.com/libingql/p/4675752.html

你可能感兴趣的文章
利用WCF的P2P共享剪贴板上的数据
查看>>
二分查找模版
查看>>
快速傅里叶变换(FFT)算法【详解】
查看>>
解决Windows10下80端口被PID为4的System占用的问题
查看>>
多个Tomcat同时运行环境配置 - imsoft.cnblogs
查看>>
opengl 教程(24) shadow mapping (2)
查看>>
RxJava 2.x 使用最佳实践
查看>>
java中关于继承的问题
查看>>
认证服务号可通过模板消息向用户发送重要的服务通知
查看>>
OVS 中的各种网络设备 - 每天5分钟玩转 OpenStack(128)
查看>>
Spring源码学习之:模拟实现BeanFactory,从而说明IOC容器的大致原理
查看>>
iOS - UIActionSheet
查看>>
用户 &#39;IIS APPPOOL\xxxx&#39; 登录失败
查看>>
iOS - TouchID 指纹识别
查看>>
centos7上安装redis
查看>>
【笔记3】用pandas实现矩阵数据格式的推荐算法 (基于用户的协同)
查看>>
(转) Face-Resources
查看>>
虚拟机克隆后找不到eth0
查看>>
MySQL案例-show fileds from 提示无权限
查看>>
Oracle推导参数Derived Parameter介绍
查看>>