session.timeout
方法一:
asp Session的默认时间设置20分钟,即超过20分钟后,器会自动放弃Session信息.
当们在asp程序中打webconfig的时候,可以看到一段如下的代码:Asp程序代码: sessionState节放在节下,形式如下:
configuration 元素(常规设置架构)
system.web 元素(ASP.NET 设置架构)
sessionState 元素(ASP.NET 设置架构)
上面一段的代码就配置应用程序如何存储Session信息的了.其中的timeout="20" 即为asp session的默认时间.需要更改时间们在此处填上不同的数值就可以了,默认单位为分.
sessionState节属性:
必须有的属性
mode 设置将Session信息存储到哪里
Off 设置为不使用Session功能
InProc 设置为将Session存储在进程内,就ASP中的存储,这默认值。
StateServer 设置为将Session存储在独立的状态中。
SQLServer 设置将Session存储在SQL Server中
可选的属性:
cookieless 设置客户端的Session信息存储到哪里
ture 使用Cookieless模式
false 使用Cookie模式,这默认值。
timeout 设置经过多少分钟后器自动放弃Session信息。默认为20分钟
tcpip详解英文txtstateConnectionString 设置Session信息存储在状态中时使用的器名称和端口号,例如:"tcpip=127.0.0.1:42424”。当mode的值StateServer,这个属性必需的。
sqlConnectionString 设置与SQL Server连接时的连接字符串。当mode的值SQLServer时,这个属性必需的。
stateNetworkTimeout 设置当使用StateServer模式存储Session状态时,经过多少秒空闲后,断Web器与存储状态信息的器的TCP/IP连接的。默认值10秒
ASP.NET session时间的设置方法二:
不过有时配置文件不能很好的解决这个问题。你可以在公共程序里Global.asax里。们在到global.asax中到 Session_Start后 按如下设置一下就可以了。
void Session_Start(object sender, EventArgs e)
{
// 在新会话启动时运行的代码
Session.Timeout = 600;
}
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应用程序,就会看到类似的样子:
其中,localhost/MyTestApplication/(ulqsek45heu3ic2a5zgdl245)/default.aspx中黑体标出的就客户端的Session ID。注意,这段信息由IIS自动加上的,不会影响以前正常的连接。
ASP.NET中器端Session状态的存储
准备工作
为了您能更好的体验到实验现象,您可以建立一个叫SessionState.aspx的页面,然后把以下这些代码到< body>< /body>中。
< scriptrunat="server">
Sub Session_A(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_A"
value="A 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信息存储在进程中
让们来回到fig文件的刚才那段段落中:
< 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任务管理器->进程中看到一个名为的进程,这个就们保存Session信息的进程。
然后,回到fig文件中上述的段落中,将mode的值改为StateServer。保存文件后的重新打一个IE,打SessionState.aspx页面,保存一些信息到Session中。这时,让们重起IIS,再回到SessionState.aspx页面中查看刚才的Session信息,发现没有丢失。
实际上,这种将Session信息存储在进程外的不光指可以将信息存储在本机的进程外,还可以将Session信息存储在其他的器的进程中。这时,不光需要将mode的值改为StateServer,
还需要在stateConnectionString中配置相应的参数。例如你的计算你192.168.0.1,你想把Session存储在IP为192.168.0.2的计算机的进程中,就需要设置成这样:stateConnectionString="tcpip=192.168.0.2:42424"。当然,不要忘记在192.168.0.2的计算机中装上.NET Framework,并且启动ASP.NET State Services。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论