加入收藏 | 设为首页 | 会员中心 | 我要投稿 银川站长网 (https://www.0951zz.com/)- 云通信、基础存储、云上网络、机器学习、视觉智能!
当前位置: 首页 > 站长学院 > Asp教程 > 正文

总结 ASP 中针对 session 对象设置的失效期限

发布时间:2023-10-19 13:19:42 所属栏目:Asp教程 来源:
导读:如果程序中没有设置session的过期时间,那么session过期时间就会按照IIS设置的过期时间来执行,IIS中session默认过期时间为20分钟,IIS中session时间可以更改时间设置要放在前面。例如代码如下:www.CuoXIn.comSessio

如果程序中没有设置session的过期时间,那么session过期时间就会按照IIS设置的过期时间来执行,IIS中session默认过期时间为20分钟,IIS中session时间可以更改时间设置要放在前面。

例如

代码如下:www.CuoXIn.com

Session.Timeout=30 'SEESION有效时间为30分钟

Session("ID")=Rs("id")

Session("Name")=Rs("Name")

Session("Pass")=Rs("Pass"

利用 Session.Timeout 属性设置超时时限

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

代码如下:www.CuoXIn.com

Session.TimeOut=MaxTime

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

代码如下:www.CuoXIn.com

<%@ 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的过期时间,可以用

代码如下:www.CuoXIn.com

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中即:

代码如下:www.CuoXIn.com

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中进行如下配置

代码如下:www.CuoXIn.com

<system.web>

<sessionState mode="InProc" timeout="30"/>

</system.web>

在这里指的是Session过期时间为30分钟。也就是说30分钟后如果当前用户没有操作,那么Session就会自动过期了。

3、在调用Session的cs页中,Load事件里面写以下

代码如下:www.CuoXIn.com

Session.Timeout = 30;

4、Store session in asp.net state service

代码如下:www.CuoXIn.com

<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=" />

(编辑:银川站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章