zoukankan      html  css  js  c++  java
  • aspnet中存储session的各种方法

     将服务器session信息存储在进程中
            让我们来回到Web.config文件的刚才那段段落中:
          < sessionState
            mode="InProc"
            stateConnectionString="tcpip=127.0.0.1:42424"
            sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
            cookieless="false"
            timeout="20"
          />
            当mode的值是InProc时,说明服务器正在使用这种模式。
            这种方式和以前asp中的模式一样,就是服务器将session信息存储在IIS进程
    中。当IIS关闭、重起后,这些信息都会丢失。但是这种模式也有自己最大好处,就是性能
    最高。应为所有的session信息都存储在了IIS的进程中,所以IIS能够很快的访问到这些
    信息,这种模式的性能比进程外存储session信息或是在sql
          server中存储session信息都要快上很多。这种模式也是asp.NET的默认方式。
            好了,现在让我们做个试验。打开刚才的SessionState.aspx页面,随便输入一
    些字符,使其存储在session中。然后,让我们让IIS重起。注意,并不是使当前的站点停
    止再开始,而是在IIS中本机的机器名的节点上点击鼠标右键,选择重新启动IIS(想当初
    使用NT4时,重新启动IIS必须要重新启动计算机才行,微软真是@#$%^&)返回到
    SessionState.aspx页面中,检查刚才的session信息,发现信息已经丢失了。
    将服务器session信息存储在进程外
            首先,让我们来打开管理工具->服务,找到名为:asp.NET State
          Service的服务,启动它。实际上,这个服务就是启动一个要保存session信息的进
    程。启动这个服务后,你可以从Windows任务管理器->进程中看到一个名为
          aspnet_state.exe的进程,这个就是我们保存session信息的进程。
            然后,回到Web.config文件中上述的段落中,将mode的值改为StateServer
    保存文件后的重新打开一个IE,打开
          SessionState.aspx页面,保存一些信息到session中。这时,让我们重起IIS,再回
    SessionState.aspx页面中查看刚才的session信息,发现没有丢失。
            实际上,这种将session信息存储在进程外的方式不光指可以将信息存储在本机
    的进程外,还可以将session信息存储在其他的服务器的进程中。这时,不光需要将mode
    的值改为StateServer,还需要在stateConnectionString中配置相应的参数。例如你的计
    算你是192.168.0.1,你想把session存储在ip192.168.0.2的计算机的进程中,就需要
    设置成这样:
          stateConnectionString="tcpip=192.168.0.2:42424"。当然,不要忘记在
    192.168.0.2的计算机中装上.NET
          Framework,并且启动asp.NET State Services服务。
    将服务器session信息存储在sql server
            首先,还是让我们来做一些准备工作。启动sql serversql server代理服务。
    sql server中执行一个叫做
          InstallSqlState.sql的脚本文件。这个脚本文件将在sql
          server中创建一个用来专门存储session信息的数据库,及一个维护session信息数
    据库的sql
          server代理作业。我们可以在以下路径中找到那个文件:
          [system drive]\winnt\Microsoft.NET\Framework\[version]\
            然后打开查询分析器,连接到sql
          server服务器,打开刚才的那个文件并且执行。稍等片刻,数据库及作业就建立好了。
    这时,你可以打开企业管理器,看到新增了一个叫ASPState的数据库。但是这个数据库中只
    是些存储过程,没有用户表。实际上session信息是存储在了tempdb
          数据库的ASPStateTempSessions表中的,另外一个ASPStateTempApplications表存
    储了asp
          application对象信息。这两个表也是刚才的那个脚本建立的。另外查看管理->SQL
          server代理->作业,发现也多了一个叫做ASPState_Job_DeleteExpiredSessions
    作业,这个作业实际上就是每分钟去ASPStateTempSessions
          表中删除过期的session信息的。
            接着,我们返回到Web.config文件,修改mode的值改为SQLServer。注意,还
    要同时修改sqlConnectionString的值,格式为:
          sqlConnectionString="data source=localhost; Integrated Security=SSPI;"
            其中data source是指sql server服务器的ip地址,如果sql serverIIS
    是一台机子,写127.0.0.1
          就行了。Integrated
          Security=SSPI的意思是使用Windows集成身份验证,这样,访问数据库将以asp.NET
    的身份进行,通过如此配置,能够获得比使用userid=sa;password=口令的sql
          server验证方式更好的安全性。当然,如果sql server运行于另一台计算机上,你
    可能会需要通过Active
          Directory域的方式来维护两边验证的一致性。
            同样,让我们做个试验。向SessionState.aspx中添加session信息,这时发现
    session信息已经存在 sql
          server中了,即使你重起计算机,刚才的session信息也不会丢失。现在,你已经完
    全看见了session信息到底是什么样子的了,而且又是存储在sql

  • 相关阅读:
    Lucene.Net 2.3.1开发介绍 —— 二、分词(一)
    控制‘控制台应用程序’的关闭操作
    详解for循环(各种用法)
    敏捷软件开发
    Sql Server的一些知识点
    在SharePoint 2010 中配置Remote Blob Storage FILESTREAM Provider
    使用LotusScript操作Lotus Notes RTF域
    JOpt Simple 4.5 发布,命令行解析器
    John the Ripper 1.8.0 发布,密码破解工具
    PacketFence ZEN 4.0.1 发布,网络接入控制
  • 原文地址:https://www.cnblogs.com/gossip/p/1950218.html
Copyright © 2011-2022 走看看