下面这一段就是配置应用程序是如何存储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>中。
SessionState.aspx
<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">
|
<font size="6"><spanid="span1"runat="server" /></font>
|
C#代码:
前台:
<form id="form1" runat="server" >
|
<div>
|
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
|
<asp:Button ID="btnSessionAdd" runat="server" Text="SessionAdd" onclick="btnSessionAdd_Click"
|
/>
|
<span id="span1" runat="server"> </span><asp:Button
|
ID="btnSessionCheck" runat="server" onclick="btnSessionCheck_Click"
|
Text="SessionCheck" />
|
<br />
|
</div>
|
</form>
|
后台:
protected void btnSessionAdd_Cl |
|
请发表评论