asp.net session 介绍一三种Session存储方式
www.firnow.com 时间:2009-03-04 作者:匿名 编辑:sky 点击: 1478 [评论]
对于asp.net的程序来说,session是一个必需要了解的对象。
下面就对session做一个具体介绍。

简单来说,Session就是服务器给客户端的一个编号,当一台web服务器运行时,可能是有多个用户都在浏览这台服务器上的网站,当每个用户首次与这台服务器建立连接时,它就与这个服务器建立了一个Session,同时服务器就会自动为其分配一个SessionId,用以标识这个用户的唯一身分,这个Session就是有服务器随机产生的一个由24个字符组成的字符串。

这个唯一的SessionId还是有很大的实际意义,当一个用户提交表单时,浏览器就会将用户的SessionId自动附加在HTTP头信息中,当服务器处理完这个表单后,就会将结果返回给SessionId所对应的用户。

如下是Web.config如何配置Session的:

<configuration>
  <system.web>
    <sessionState mode=" Off | InProc | StateServer | SQLServer "
                       cookieless=" true | false "
                       timeout=" number of minutes "
                       stateConnectionString=" tcpip=server:port "
                       sqlConnectionString=" sql connection string "
                       stateNetworkTimeout=" number of seconds " />
  </system.web>
</configuration>

其中各个节点属性:
mode: Session的存储方式(必有的属性)。
           InProc:将Session存到进程内(这是Default值。)
           off:禁用Session.
           StateServer:将Session存到独立的状态服务中(Asp.net State Service).
           SqlServer:将Session存到SqlServer中。
Cookieless:设置客户端Session存储的方式。
                 false:使用Cookie模式(default).
                 true:使用Cookieless模式。
timeout:设置Session过期时间(default is 20 minutes)
stateConnectionString: 设置Session独立存放的状态服务所在服务器的名称(地址)和端口号,当mode=&ldquo;stateserver时,这个属性就是必须的。
     sqlConnectionString:设置与Sqlserver的连接字符串,当mode="sqlserver"时,这个属性时必须的。
stateNetWorkTimeout:设置当mode=&ldquo;StateServer&rdquo;时,经过多少秒空闲后,断开web服务器与存储状态信息服务器的TCP/IP连接(default is 10 seconds).

asp.net中客户端Session的存储。
      asp.net中,默认是使用Cookie存储Session的,如果是将cookieless="false",改成cookieless="true",则session就不用cookie来存储了,而是使用url来存储。

asp.net服务器端session存储在进程内(inproc)
      当mode="Inproc"时,服务器的Session存储在IIS进程中,当IIS关闭,重启时,这些Session信息就会丢失,但这种模式最大的好处就是性能提高。

asp.net服务器端Session存储在进程外(StateServer)
     当mode="StateServer"时,服务器的Session就存储在"ASP.NET State Server"这个服务的进程中,在服务中找到名为:&ldquo;ASP.NET State Service&rdquo;的服务,启动这个服务,在资源管理器的进程中就能找到一个名为:&ldquo;aspnet_state.exe"的进程,这个就是我们保存 Session的进程。
      &rdquo;ASP.NET State Server"服务可以与Web服务器分开.eg:web服务器在192.168.0.100上,&ldquo;asp.net state service"服务在192.168.0.101上,则可以进行设置:
     mode="StateServer" stateConnection="tcpip=192.168.1.101:42424".

asp.net服务器端Session存储到SQLServer中(SQLServer),
    当mode="sqlserver"时,服务器的Session就是存储到Sql server中建立一个存储Session的数据库。在
 %windir%/Microsoft.NET/Framework/v2.0.50727 下有个名为: InstallSqlState.sql 的sql脚本文件. 这个脚本是专门用来建存储Session的数据库以及一个维护Session信息数据库的SQL Server代理作业的.

执行此sql脚本后,会看到一个新增的aspstate数据库,但这个数据库中,只有存储过程,没有用户表,用户表放到了tempdb这个数据库中去了,ASpstateTempSessions和ASPStateTempApplications,Session信息存储到了ASPStateTempApplication存储了asp中Application对象信息。

另外查看管理->SQL Server代理->作业,会发现多了一个名为:

ASPState_job_DeleteExpiredSession的作业,这个作业实际上是每分钟去ASPStateTempSession中删除过期的Session信息。

上面的方法是建立Session数据库的一个”官方“方法,但在实际的应用中一般没这么去建,而是采用另一种方法,使用下面这段命令来自动创建Session数据库:

aspnet_regsql.exe -S ServerName/InstanceName -U User -P Password -d DBName -ssadd -sstype c

此命令将在ServerName/InstanceName建立DBName的数据库, 用户存储Session的数据库. 此数据库中包含了存储过程和用户表.  同时在SQL Server代理 -> 作业 中也加入了相应的作业.

然后在Web.config中设置好配置信息:

mode="SQLServer" sqlConnectionString="data source=ServerName/InstanceName; Integrated Security=SSPI;"

"Integrated Security=SSPI;" 是指使用Windows集成身份验证.

如果使用SQL用户登陆方式. 则在sqlConnectionString中设置好"userid=sa; password=***".

这样一来就可以将Session存放到SQLServer中了

文章出处:飞诺网(http://www.diybl.com/course/4_webprogram/asp.net/netjs/20090304/158092.html)

asp.net session 介绍一三种Session存储方式相关推荐

  1. DAS、SAN和NAS三种服务器存储方式

    一.存储的分类 根据服务器类型分为:封闭系统的存储和开放系统的存储, 内置存储 外挂存储  外挂存储根据连接的方式分为: 网络接入存储(Network-Attached Storage,简称NAS) ...

  2. hive三种元数据存储方式

    hive本身不存储数据,借助hdfs存储数据,hive和关系型数据库一样是有表结构的,这些信息hive也存储在第三方软件中,如derby.mysql. 根据元数据的存储方式,hive的部署可以分为三种 ...

  3. 前端三种本地存储方式+indexedDB浏览器数据库存储

    1.cookie存储: 特征:1.不同的浏览器存放的cookie位置不一样,也是不能通用的.2.cookie的存储是以域名形式进行区分的,不同的域下存储的cookie是独立的.3.我们可以设置cook ...

  4. 数据存储方式有哪些?这3种数据存储方式了解吗?

    数据存储具有很强的现实意义,只有采取合理的数据存储方式,才能够有利于数据的管理.检索等.为增进大家对数据存储方式的认识,本文将对三种数据存储方式予以介绍.如果你对数据存储方式具有兴趣,不妨继续往下阅读 ...

  5. asp.net错误处理的三种方法

    asp.net错误处理的三种方法 以前有过一篇博文,主要是出错时调至错误页面,然后将当前出错的页面存入Session,然后执行刷新等操作,该机制主要用于 程序员自己控制错误,但是有些错误和异常是程序员 ...

  6. 【C语言】-关于strlen的介绍以及三种模拟实现的方法

    作者:低调 作者宣言:写好每一篇博客 文章目录 前言 一.strlen函数的使用 二.strlen函数的模拟实现 2.1创建临时变量法 2.2递归法 2.3指针法 总结 前言 今天我们来讲解一下str ...

  7. ASP.NET MVC下的四种验证编程方式[续篇]

    ASP.NET MVC下的四种验证编程方式[续篇] 原文:ASP.NET MVC下的四种验证编程方式[续篇] 在<ASP.NET MVC下的四种验证编程方式>一文中我们介绍了ASP.NET ...

  8. DDOS攻击器常见的三种DDoS攻击方式详解

    一流的攻击速度以及强大的隐蔽性能,使得DDOS集合了市面上所有攻击软件优点成为了最热的攻击方式.接下来本文将简单的介绍一下三种最为流行的DDOS攻击方式. SYN/ACK Flood攻击: 这种攻击方 ...

  9. ios首次加载web_IOS_IOS中UIWebView的使用详解,一、初始化与三种加载方式 UI - phpStudy...

    IOS中UIWebView的使用详解 一.初始化与三种加载方式 UIWebView继承与UIView,因此,其初始化方法和一般的view一样,通过alloc和init进行初始化,其加载数据的方式有三种 ...

最新文章

  1. 断言(assert)和程序的安全保证
  2. vuedraggable示例_vue拖拽列表vuedraggable
  3. Access转Sql Server问题
  4. 关系数据库规范化理论(关系数据库设计理论)
  5. 部署在Netweaver上的Fiori应用的WebContent文件夹
  6. mac下的svn服务器建立
  7. Sublime Text 3 代码格式化插件推荐 CodeFormatter
  8. 软件测试行业用mac好还是win好,业余RMAA测试 同样的硬件下OS X果然比Windows声音好...
  9. 2021十大金融科技趋势
  10. UVa11542 - Square(gauss)
  11. Vue 使用 v-show 失效
  12. 服务器是怎么工作的?(一)——DHCP工作原理剖析
  13. Select2 鼠标点击空白处不消失简单测试和解决方法
  14. 金融评分卡项目—7.申请评分卡中的数据预处理和特征衍生
  15. 21. Magento 创建新闻模块(2)
  16. 使用存储过程创建datawindow
  17. matlab 正弦波 fft,【求助】正弦信号序列fft频谱分析!!!
  18. 谷歌安装Restlet Client插件
  19. Excel常用函数公式20例
  20. adt变频器故障代码ol2_变频器常见故障代码及处理实例

热门文章

  1. Linux 搭建Sphinx 全文检索引擎
  2. Managing Tables
  3. Server.MapPath(path)的使用
  4. cisco 单词 词典
  5. SQLserver2008高级查询语句应用实例
  6. 加密解密基础问题:字节数组和(16进制)字符串的相互转换
  7. CSS3 Animation制作飘动的浮云和星星效果
  8. OnScrollListener回调分析
  9. 标题要在3~5字之间-三年总结
  10. Sklearn-train_test_split随机划分训练集和测试集