asp

位置:IT落伍者 >> asp >> 浏览文章

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


发布日期:2021年12月12日
 
asp中设置session过期时间方法总结

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

如果程序中设置了session过期时间那么即使你将IIS中session时间设置小时也没有用因为程序会首先按照程序中设置只有程序没设置的情况下才会按照IIS设置的

时间设置要放在前面
例如

代码如下 SessionTimeout= SEESION有效时间为分钟
Session("ID")=Rs("id")
Session("Name")=Rs("Name")
Session("Pass")=Rs("Pass"


利用 SessionTimeout 属性设置超时时限

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

代码如下 SessionTimeOut=MaxTime

实例代码asp)页面本实例说明如何控制会话的结束

代码如下


<%@ language="vbscript" %>
<% sessiontimeout= %>
<html>
<head><title>控制会话的结束时间</title><head>
<body>
<%
who = SessionSessionID
CurrentPage=RequestServerVariables("SCRIPT_NAME")
ResponseAppendTolog who & ":" & CurrentPage
Responsewrite "<center>你的会话标识为" & who & "<p>"
Responsewrite "你当前访问的页面路径为:" & CurrentPage & "<p>"
if Session("I")="" then
session("i")=
else
session("i")=session("i")+
end if
SessionAbandon
Responsewrite "本页面被你刷新了" & Session("i") & "次</centr>"
%>


Aspnet应用中很多人会遇到Session过期设置有沖突其中可以有四处设置Session的过期时间

全局网站(即服务器)级

IIS-网站-属性-Aspnet-编辑配置-状态管理-会话超时(分钟)-设置为即为小时分钟后如果当前用户没有操作那么Session就会自动过期

网站级

IIS-网站-具体网站(如DemoSite)-属性-Aspnet此时有两个选项一个是“编辑全局配置”一个是“编辑配置”

如果“编辑全局配置”就和上个配置一样

如果“编辑配置”则只对当前网站生效因为一个服务器可能有很多独立网站

继续选择“状态管理”-会话超时(分钟)-设置为分钟效果同上只不过只对当前网站生效

身份认证-Forms-Cooke超时选择"::"个小时可选项共有以下八项

::

::

::

::

::

::

::

:::

即最长小时最小分钟这是默认的配置在应用中可以自由定制

应用程序级

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

页面级

在某页面中设置SessionTimeout = ;即可临时修改某页面的会话过期时间

查看某个Session的过期时间可以用

代码如下 TimeSpan SessTimeOut = new TimeSpan( SystemWebHttpContextCurrentSessionTimeout );
TimeSpan SessTimeOut = new TimeSpan( SystemWebHttpContextCurrentSessionTimeout );

其中二和三的设置体现在Webconfig中即

代码如下 view plaincopy to clipboardprint?
<?xml version=""?>
<configuration>
<systemweb>
<authentication mode="Forms" >
<forms name="AuthLogin" loginUrl="/Loginaspx" protection="All" timeout="" slidingExpiration="true"/>
</authentication>
<sessionState mode="InProc" cookieless="false" timeout="" />
</systemweb>
<location path="Loginaspx">
<systemweb>
<authorization>
<allow users="*" />
</authorization>
</systemweb>
</location>
</configuration>
<?xml version=""?>
<configuration>
<systemweb>
<authentication mode="Forms" >
<forms name="AuthLogin" loginUrl="/Loginaspx" protection="All" timeout="" slidingExpiration="true"/>
</authentication>
<sessionState mode="InProc" cookieless="false" timeout="" />
</systemweb>
<location path="Loginaspx">
<systemweb>
<authorization>
<allow users="*" />
</authorization>
</systemweb>
</location>
</configuration>

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

另外一个值得注意 的地方

在设置二处设置会话超时(SessionState)分钟而同时用forms认证设置为“::分钟并且slidingExpirationo为false则真正生效的Session过期时间是多少呢?

有效的结果是SessionState的设置分钟

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


网上找到的其它方法


操作系统Widnows Server

步骤开始——〉管理工具——〉Internet信息服务(IIS)管理器——〉网站——〉默认网站——〉右键“属性”——〉主目录——〉配置——〉选项——〉启用会话状态——〉会话超时(在这儿设置你要的超时时间单位分钟)确定即可

ASPNET应用程序中Session过期时间的设置

在ASPNET这样的Web应用中Session是用来保存用户状态的常用手段不过由于服务器内存空间是有限的所以Session过期时间设置是很有必要的在ASPNET中如何设置Session的过期时间呢很简单修改webconfig配置

具体修改方法如下在webconfig中进行如下配置

代码如下

<systemweb>

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

</systemweb>

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

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

代码如下

SessionTimeout = ;

Store session in aspnet state service

代码如下

<sessionState cookieless="false" timeout="" mode="StateServer" stateConnectionString="tcpip=:" sqlConnectionString="data source=;user id=sa;password=" />

上一篇:asp采集数据并自动判断网页编码并转换

下一篇:ASP如何获取真实IP地址