熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

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

2013-11-13 10:45:19  來源: .NET編程 

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


From:http://tw.wingwit.com/Article/program/net/201311/14442.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.