zoukankan      html  css  js  c++  java
  • asp中设置session过期时间方法总结

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

     更新时间:2012年09月07日 00:02:28   作者:    我要评论

    asp中默认session过期时间为20分钟,很多情况下不够,今天有客户要求很多就要重新登录了,所以准备了这篇文章,方便需要的朋友

    如果程序中没有设置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=" /> 

    您可能感兴趣的文章:

  • 相关阅读:
    Web调用Linux客户端remmina运维
    前端和后端连载一起启动
    react redux 二次开发流程
    快上车,react 入门拾遗
    吐血整理!这篇带你彻底理解主存中存储单元地址的分配
    大学四年走来,这些网络工程师必备的模拟器我都给你整理好了
    主存、辅存、内存、外存、存储器是什么?还傻傻分不清楚?看完这一篇就够了
    一分钟理解系列—半导体存储芯片的知识点总结
    小白入门NAS—快速搭建私有云教程系列(一)
    五分钟理解主存储器的基本组成结构
  • 原文地址:https://www.cnblogs.com/grj001/p/12224258.html
Copyright © 2011-2022 走看看