sessionState节点的配置

web.config关于sessionState节点的配置方案,sessionState有四种模式:off,inProc,StateServer,SqlServer。

1、off模式

从字面上就可以看出这个是关闭模式,如果当前页面不需要session的值,为了减少服务器资源,你可以去掉Session的开销。

<sessionState mode="off">或者页面上

<%@ Page EnableSessionState="false" %>来关闭Session。

2、inProc模式(缺省模式)

它允许“无Cookie”的会话,以及在服务器之外存储

会话数据。ASP.NET会话状态模块在Web.config文件中像下面这样配置:

<sessionState mode="InProc" cookieless="false" timeout="20" />

在这个例子中,mode属性设为InProc(默认值),表明会话状态要由ASP.NET存储到内存中,而且

不用Cookie来传递会话ID。采取这种方式,不管Cookie还是隐藏表单字段都用不着了。

所以,即使网页中没有使用表单,也能加入会话。 但是这种方法,应用程序的状态将依赖于 ASP.NET进程, 当IIS进程崩溃或者正常重启时,保存在

进程中的状态将丢失。

3、StateServer会话管理mos

将mode属性设为StateServer,也就是将会话数据存储到单独的内存缓冲区中,再由单独一台机器上运行

的Windows服务来控制这个缓冲区。状态服务全称是“ASP.NET State Service ”(aspnet_state.exe),计算机管理-服务 里面即可看到此服务,启动该服务j

它由Web.config文件中的stateConnectionString属性来配置。该属性指定了服务所在的服务器,以及要监

视的端口:

<sessionState mode="StateServer"

stateConnectionString="tcpip=myserver:42424"

cookieless="false" timeout="20" />



在这个例子中,状态服务在一台名为myserver的机器的42424端口(默认端口)运行。要在服务器上改变

端口,可编辑HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters注册表项中的Port值。



显然,使用状态服务的优点在于进程隔离,并可在Web farm(网站群)中共享。 使用这种模式,会话状态的存储将不

依赖于iis进程的失败或者重启,然而,一旦状态服务中止,所有会话数据都会丢失。换言之,状态服务不

像SQL Server那样能持久存储数据;它只是将数据存储在内存中。

4 用SQL Server进行会话管理



ASP.NET还允许将会话数据存储到一个数据库服务器中,方法是将mode属性变成SqlServer。

在这种情况下,ASP.NET尝试将会话数据存储到由sqlConnectionString属性(其中包含数据源以及登录服

务器所需的安全凭证)指定的SQL Server中。

为了用恰当的数据库对象来配置SQL erver,管理员还需要创建ASPState数据库,

方法是运行WinDir\Microsoft.Net\Framework\Version文件夹中的InstallSqlState.sql脚本(WinDir是服务

器的Windows文件夹,而Version是你使用的.NET框架版本的安装文件夹)。

要配置SQL服务器,可以在命令行中运行SQL Server 提供的命令行工具osql.exe

osql -S [ server name] -U [user] -P [password] -i InstallSqlState.sql

例如

osql -S (local)\NetSDK -U sa -P "" -i InstallSqlState.sql

在这里用户名必须是SQL服务器上的sa帐号,或者具有同等权限的其他帐号。有兴趣的读者可以打开

这个脚本文件来了解ASP.NET是如何和SQL Server配合实现状态管理的。

卸载这些表和存储过程,可以使用UninstallSqlState.sql脚本,使用方法与上面类似。做好必要的数据库准备工作后,将web.config 文件中的sessionstate 元素的mode改为"sqlserver"

,并且指定SQL连接字符串。具体如下:

mode="sqlserver"

sqlConnectionString="data source=127.0.0.1; userid=sa; password="

配置好SQL Server后,应用程序代码运行时就和InProc模式没有什么区别。但要注意的是,由于数据不存储在本地内存,所以存储会话状态的对象需要进行序列化和反序列化,以便通过网络传给数据库服务器,以及从数据库服务器传回。这当然会影响性能。通过在数据库中存储会话状态,可分别针对扩展性及可靠性来有效地平衡性能。另外,可以利用SQL Server的集群,使状态存储不依赖于单个的SQL Server, 这样就可以为应用程序提供极大限度的可靠性。

Asp.net的sessionState四种模式配置方案的更多相关文章

  1. OAuth2简易实战(一)-四种模式

    1. OAuth2简易实战(一)-四种模式 1.1. 授权码授权模式(Authorization code Grant) 1.1.1. 流程图 1.1.2. 授权服务器配置 配置授权服务器中 clie ...

  2. LVS 原理(调度算法、四种模式、四层负载均衡和七层 的区别)

    参考文档:http://blog.csdn.net/ioy84737634/article/details/44916241 目录 lvs的调度算法 lvs的四种模式 四层均衡负载和七层的区别 1.l ...

  3. IdentityServer4 实现OAuth2.0四种模式之密码模式

    接上一篇:IdentityServer4 实现OAuth2.0四种模式之客户端模式,这一篇讲IdentityServer4 使用密码模式保护API访问. 一,IdentityServer配置 1,添加 ...

  4. IdentityServer4实现Oauth2.0四种模式之隐藏模式

      接上一篇:IdentityServer4实现OAuth2.0四种模式之密码模式,密码模式将用户的密码暴露给了客户端,这无疑是不安全的,隐藏模式可以解决这个问题,由用户自己在IdentityServ ...

  5. IdentityServer4实现OAuth2.0四种模式之授权码模式

    接上一篇:IdentityServer4实现OAuth2.0四种模式之隐藏模式 授权码模式隐藏码模式最大不同是授权码模式不直接返回token,而是先返回一个授权码,然后再根据这个授权码去请求token ...

  6. flask开启调试的四种模式

    flask开启调试的四种模式 在app.run()中加一个参数, 'debug=True'就可以开启debug模式 from flask import Flask app = Flask(__name ...

  7. 【框架】SPI四种模式+通用设备驱动实现-源码

    目录 前言 bsp_spi.c bsp_spi.h bsp_flash.c bsp_flash.h 前言 SPI 介绍为搜集百度资料+个人理解 其余为原创(有误请指正) 集四种模式于一身 demo 采 ...

  8. gRPC四种模式、认证和授权实战演示,必赞~~~

    前言 上一篇对gRPC进行简单介绍,并通过示例体验了一下开发过程.接下来说说实际开发常用功能,如:gRPC的四种模式.gRPC集成JWT做认证和授权等. 正文 1. gRPC四种模式服务 以下案例演示 ...

  9. Hibernate 查询MatchMode的四种模式

    Hibernate 查询MatchMode的四种模式 MatchMode.START:字符串在最前面的位置.相当于"like 'key%'" MatchMode.END:字符串在最 ...

随机推荐

  1. java.util.logging.Logger基础

    1. 定义 java.util.logging.Logger是Java自带的日志类,可以记录程序运行中所产生的日志.通过查看所产生的日志文件,可以分析程序的运行状况,出现异常时,分析及定位异常. 2. ...

  2. MySQL学习笔记(二)

    连接与断开服务器 应该以下面的方式连接MySQL服务器,而不是将密码以明文方式输入连接. C:\> mysql -h host -u user -pEnter password: ******* ...

  3. bzoj 2655: calc [容斥原理 伯努利数]

    2655: calc 题意:长n的序列,每个数\(a_i \in [1,A]\),求所有满足\(a_i\)互不相同的序列的\(\prod_i a_i\)的和 clj的题 一下子想到容斥,一开始从普通容 ...

  4. BZOJ 2594: [Wc2006]水管局长数据加强版 [LCT kruskal]

    2594: [Wc2006]水管局长数据加强版 Time Limit: 25 Sec  Memory Limit: 128 MBSubmit: 2917  Solved: 918[Submit][St ...

  5. getHibernateTemplate() VS getSession()

    如题所示,对于这个问题,官网文档已给出答案,详见: /** * Obtain a Hibernate Session, either from the current transaction or * ...

  6. firefox在引入vue.js后不支持e=e||window.event的解决办法

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  7. IT连创业系列:年终回顾录!

    一年不过一转眼,一光阴的青春又逝去了! 还有不到几天,就要进入新年快乐的祝福包围圈了. 在这归家之际,留文一篇,为这忙碌的一年创业留点回忆! IT连创业这一年走来: 大大小小的深坑,小小大大的困难,一 ...

  8. Node.js爬取豆瓣数据

    一直自以为自己vue还可以,一直自以为webpack还可以,今天在慕课逛node的时候,才发现,自己还差的很远.众所周知,vue-cli基于webpack,而webpack基于node,对node不了 ...

  9. 对TCP三次握手四次分手还不清楚的速度进,超简单解析,明白了就很好记!

    关于TCP三次握手四次分手,之前看资料解释的都很笼统,很多地方都不是很明白,所以很难记,前几天看的一个博客豁然开朗,可惜现在找不到了.现在把之前的疑惑总结起来,方便一下大家. 先上个TCP三次握手和四 ...

  10. js中boolean类型的理解

    <html> <head> <script type="text/javascript"> var x="12"; aler ...