程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> ASP編程 >> 關於ASP編程 >> asp中設置session過期時間方法總結

asp中設置session過期時間方法總結

編輯:關於ASP編程

     如果程序中沒有設置session的過期時間,那麼session過期時間就會按照IIS設置的過期時間來執行,IIS中session默認過期時間為20分鐘,IIS中session時間可以更改

     

    如果程序中設置了session過期時間,那麼,即使你將IIS中session時間設置100小時也沒有用,因為程序會首先按照程序中設置,只有程序沒設置的情況下才會按照IIS設置的

    時間設置要放在前面
    例如

     代碼如下   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=" />

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved