web.config中的session配置

让我们看看这一段配置中所包含的内容的意思。sessionState 节点的语法是这样的:
< 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"
/>
必须有的属性是: 属性 选项 描述
mode 设置将 session 信息存储到哪里
         Off 设置为不使用 session 功能,
         InProc 设置为将 session 存储在进程内,就是 asp 中的存储方式,这是默认值,
        StateServer 设置为将 session 存储在独立的状态服务中,
         SQLServer 设置将 session 存储在 sql server 中。
可选的属性是: 属性 选项 描述
        cookieless 设置客户端的 session 信息存储到哪里,
        ture 使用 Cookieless 模式,
        false 使用 Cookie 模式,这是默认值,
         timeout 设置经过多少分钟后服务器自动放弃 session 信息,默认为 20 分钟。
stateConnectionString 设置将 session 信息存储在状态服务中时使用的服务器名称和端口号,例如: "tcpip=127.0.0.1:42424”。当mode 的值是 StateServer 是,这个属性是必需的。
sqlConnectionString 设置与 sql server 连接时的连接字符串。例如 "data source= localhost;Integrated Security=SSPI;Initial Catalog=northwind" 。当 mode 的值是 SQLServer 时,这个属性是必需的。
stateNetworkTimeout 设置当使用 StateServer 模式存储 session 状态时,经过多少秒空闲后,断开 Web 服务器与存储状态信息的服务器的 tcp/IP 连接的。默认值是 10 秒钟。
asp.NET 中客户端 session 状态的存储
  在我们上面的 session 模型简介中,大家可以发现 session 状态应该存储在两个地方,分别是客户端和服务器端。客户端只负责保存相应网站的 SessionID ,而其他的 session 信息则保存在服务器端。在 asp 中,客户端的 SessionID 实际是以 Cookie 的形式存储的。如果用户在浏览器的设置中选择了禁用 Cookie ,那末他也就无法享受 session 的便利之处了,甚至造成不能访问某些网站。为了解决以上问题,在 asp.NET 中客户端的 session 信息存储方式分为: Cookie Cookieless 两种。
   asp.NET 中,默认状态下,在客户端还是使用 Cookie 存储 session 信息的。如果我们想在客户端使用 Cookieless 的方式存储 session 信息的方法如下:
  找到当前 Web 应用程序的根目录,打开 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"
/>
  这段话中的 cookieless="false" 改为: cookieless="true" ,这样,客户端的 session 信息就不再使用 Cookie 存储了,而是将其通过 URL 存储。关闭当前的 IE ,打开一个新 IE ,重新访问刚才的 Web 应用程序,就会看到类似下面的样子:
其中, http://localhost/MyTestApplication/(ulqsek45heu3ic2a5zgdl245) /default.aspx 中黑体标出的就是客户端的 session ID 。注意,这段信息是由 IIS 自动加上的,不会影响以前正常的连接。
asp.NET 中服务器端 session 状态的存储 准备工作:
  为了您能更好的体验到实验现象,您可以建立一个叫做 SessionState.aspx 的页面,然后把以下这些代码添加到 < body>< /body> 中。
< scriptrunat="server">
Sub Session_Add(sender As Object, e As EventArgs)
  session("MySession") = text1.Value
  span1.InnerHtml = "Session data updated! < P>Your session contains: < font color=red>" & session("MySession"). ToString() & "< /font>"
End Sub
Sub CheckSession(sender As Object, eAs EventArgs)
  If (Session("MySession")Is Nothing) Then
    span1.InnerHtml = "NOTHING, session DATA LOST!"
  Else
    span1.InnerHtml = "Your session contains: < font color= red>" & session("MySession").ToString() & "<   /font>"
End If
End Sub
< /script>
< formrunat="server"id="Form2">
  < inputid="text1"type="text"runat="server"name="text1">
  < inputtype="submit"runat="server"OnServerClick="Session_Add"
      value="Add to session State " id="Submit1"name="Submit1">
  < inputtype="submit"runat="server"OnServerClick="CheckSession"
      value=" View session State " id="Submit2"name="Submit2">
< /form>
< hrsize="1">
< fontsize="6">< spanid="span1"runat="server" />< /font>
  这个 SessionState.aspx 的页面可以用来测试在当前的服务器上是否丢失了 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 信息,发现信息已经丢失了。
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值