欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

asp中设置session过期时间方法总结

程序员文章站 2022-05-03 12:33:50
如果程序中没有设置session的过期时间,那么session过期时间就会按照iis设置的过期时间来执行,iis中session默认过期时间为20分钟,iis中sessio...
如果程序中没有设置session的过期时间,那么session过期时间就会按照iis设置的过期时间来执行,iis中session默认过期时间为20分钟,iis中session时间可以更改

时间设置要放在前面

例如
复制代码 代码如下:

session.timeout=30 'seesion有效时间为30分钟
session("id")=rs("id")
session("name")=rs("name")
session("pass")=rs("pass"


利用 session.timeout 属性设置超时时限

对于一个登录到 asp 应用程序的用户,如果用户在系统默认的时间内未进行其它任何操作,当设置的时间一到便自动撤销这个用户的 session,这样就可以防止系统的资源被浪费。session 对象的 timeout 属性可以用来设置“过期时间”,已分钟为单位,其设置格式为:

复制代码 代码如下:

session.timeout=maxtime

实例代码:(5.asp)页面,本实例说明如何控制会话的结束。
复制代码 代码如下:

<%@ language="vbscript" %>
<% session.timeout=60 %>
<html>
<head><title>控制会话的结束时间</title><head>
<body>
<%
who = session.sessionid
currentpage=request.servervariables("script_name")
response.appendtolog who & ":" & currentpage
response.write "<center>你的会话标识为:" & who & "<p>"
response.write "你当前访问的页面路径为:" & currentpage & "<p>"
if session("i")="" then
session("i")=1
else
session("i")=session("i")+1
end if
session.abandon
response.write "本页面被你刷新了" & session("i") & "次。</centr>"
%>


asp.net应用中,很多人会遇到session过期设置有冲突。其中,可以有四处设置session的过期时间:

一、全局网站(即服务器)级

iis-网站-属性-asp.net-编辑配置-状态管理-会话超时(分钟)-设置为120,即为2小时,即120分钟后如果当前用户没有操作,那么session就会自动过期。

二、网站级

iis-网站-具体网站(如demosite)-属性-asp.net,此时有两个选项,一个是“编辑全局配置”,一个是“编辑配置”。
如果“编辑全局配置”,就和上个配置一样。
如果“编辑配置”,则只对当前网站生效。因为一个服务器可能有很多独立网站。
1、继续选择“状态管理”-会话超时(分钟)-设置为360,即360分钟。效果同上,只不过只对当前网站生效。
2、身份认证-forms-cooke超时,选择"12:00:00",即12个小时。可选项共有以下八项:
00:15:00
00:30:00
01:00:00
02:00:00
04:00:00
08:00:00
12:00:00
1:00:00:00
即最长24小时,最小15分钟。这是默认的配置。在应用中可以*定制。

三、应用程序级

同网站管理,只不过作用域仅限当前应用程序。

四、页面级

在某页面中,设置session.timeout = 30;即可临时修改某页面的会话过期时间。
查看某个session的过期时间,可以用
复制代码 代码如下:

timespan sesstimeout = new timespan(0, 0, system.web.httpcontext.current.session.timeout, 0, 0);
timespan sesstimeout = new timespan(0, 0, system.web.httpcontext.current.session.timeout, 0, 0);

其中,二和三的设置,体现在web.config中即:
复制代码 代码如下:

view plaincopy to clipboardprint?
<?xml version="1.0"?>
<configuration>
<system.web>
<authentication mode="forms" >
<forms name="authlogin" loginurl="/login.aspx" protection="all" timeout="360" slidingexpiration="true"/>
</authentication>
<sessionstate mode="inproc" cookieless="false" timeout="20" />
</system.web>
<location path="login.aspx">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
</configuration>
<?xml version="1.0"?>
<configuration>
<system.web>
<authentication mode="forms" >
<forms name="authlogin" loginurl="/login.aspx" protection="all" timeout="360" slidingexpiration="true"/>
</authentication>
<sessionstate mode="inproc" cookieless="false" timeout="20" />
</system.web>
<location path="login.aspx">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
</configuration>

以上四处设置的优先级为页面级>应用程序级>网站级>服务器级。换句话说,如果页面设置为20分钟,网站设置为120分钟,那么,显然以20分钟为生效的过期时间。

另外一个值得注意 的地方。

在设置二处,设置会话超时(sessionstate)120分钟,而同时用forms认证,设置为“00:15:00”,即15分钟,并且slidingexpirationo为false,则真正生效的session过期时间是多少呢?

有效的结果是sessionstate的设置,即120分钟。

如果有设置session过期时间没有生效的,请检查以上几处配置

网上找到的其它方法

1、操作系统:widnows server 2003
  步骤:开始——〉管理工具——〉internet信息服务(iis)管理器——〉网站——〉默认网站——〉右键“属性”——〉主目录——〉配置——〉选项——〉启用会话状态——〉会话超时(在这儿设置你要的超时时间,单位分钟)。确定即可。
  2、asp.net应用程序中session过期时间的设置
  在asp.net这样的web应用中,session是用来保存用户状态的常用手段,不过由于服务器内存空间是有限的,所以session过期时间设置是很有必要的。在asp.net中如何设置session的过期时间呢,很简单,修改web.config配置。
  具体修改方法如下,在web.config中进行如下配置
复制代码 代码如下:

  <system.web>
  <sessionstate mode="inproc" timeout="30"/>
  </system.web>

  在这里指的是session过期时间为30分钟。也就是说30分钟后如果当前用户没有操作,那么session就会自动过期了。
  3、在调用session的cs页中,load事件里面写以下
复制代码 代码如下:

  session.timeout = 30;

  4、store session in asp.net state service
复制代码 代码如下:

  <sessionstate cookieless="false" timeout="480" mode="stateserver" stateconnectionstring="tcpip=127.0.0.1:42424" sqlconnectionstring="data source=127.0.0.1;user id=sa;password=" />