ASP.NET的 Session 详解3


  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时,说明服务器正在使用这种模式。

转载于:https://www.cnblogs.com/think-jerry/archive/2007/05/27/761341.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值