- 資訊首頁(yè) > 開(kāi)發(fā)技術(shù) > web開(kāi)發(fā) > ASP >
- asp中設置session過(guò)期時(shí)間方法總結
如果程序中沒(méi)有設置session的過(guò)期時(shí)間,那么session過(guò)期時(shí)間就會(huì )按照IIS設置的過(guò)期時(shí)間來(lái)執行,IIS中session默認過(guò)期時(shí)間為20分鐘,IIS中session時(shí)間可以更改
時(shí)間設置要放在前面
例如
代碼如下:
Session.Timeout=30 'SEESION有效時(shí)間為30分鐘
Session("ID")=Rs("id")
Session("Name")=Rs("Name")
Session("Pass")=Rs("Pass"
利用 Session.Timeout 屬性設置超時(shí)時(shí)限
對于一個(gè)登錄到 ASP 應用程序的用戶(hù),如果用戶(hù)在系統默認的時(shí)間內未進(jìn)行其它任何操作,當設置的時(shí)間一到便自動(dòng)撤銷(xiāo)這個(gè)用戶(hù)的 Session,這樣就可以防止系統的資源被浪費。Session 對象的 TimeOut 屬性可以用來(lái)設置“過(guò)期時(shí)間”,已分鐘為單位,其設置格式為:
代碼如下:
Session.TimeOut=MaxTime
實(shí)例代碼:(5.asp)頁(yè)面,本實(shí)例說(shuō)明如何控制會(huì )話(huà)的結束。
代碼如下:
<%@ language="vbscript" %>
<% session.timeout=60 %>
<html>
<head><title>控制會(huì )話(huà)的結束時(shí)間</title><head>
<body>
<%
who = Session.SessionID
CurrentPage=Request.ServerVariables("SCRIPT_NAME")
Response.AppendTolog who & ":" & CurrentPage
Response.write "<center>你的會(huì )話(huà)標識為:" & who & "<p>"
Response.write "你當前訪(fǎng)問(wèn)的頁(yè)面路徑為:" & CurrentPage & "<p>"
if Session("I")="" then
session("i")=1
else
session("i")=session("i")+1
end if
Session.Abandon
Response.write "本頁(yè)面被你刷新了" & Session("i") & "次。</centr>"
%>
Asp.net應用中,很多人會(huì )遇到Session過(guò)期設置有沖突。其中,可以有四處設置Session的過(guò)期時(shí)間:
一、全局網(wǎng)站(即服務(wù)器)級
IIS-網(wǎng)站-屬性-Asp.net-編輯配置-狀態(tài)管理-會(huì )話(huà)超時(shí)(分鐘)-設置為120,即為2小時(shí),即120分鐘后如果當前用戶(hù)沒(méi)有操作,那么Session就會(huì )自動(dòng)過(guò)期。
二、網(wǎng)站級
IIS-網(wǎng)站-具體網(wǎng)站(如DemoSite)-屬性-Asp.net,此時(shí)有兩個(gè)選項,一個(gè)是“編輯全局配置”,一個(gè)是“編輯配置”。
如果“編輯全局配置”,就和上個(gè)配置一樣。
如果“編輯配置”,則只對當前網(wǎng)站生效。因為一個(gè)服務(wù)器可能有很多獨立網(wǎng)站。
1、繼續選擇“狀態(tài)管理”-會(huì )話(huà)超時(shí)(分鐘)-設置為360,即360分鐘。效果同上,只不過(guò)只對當前網(wǎng)站生效。
2、身份認證-Forms-Cooke超時(shí),選擇"12:00:00",即12個(gè)小時(shí)??蛇x項共有以下八項:
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
即最長(cháng)24小時(shí),最小15分鐘。這是默認的配置。在應用中可以自由定制。
三、應用程序級
同網(wǎng)站管理,只不過(guò)作用域僅限當前應用程序。
四、頁(yè)面級
在某頁(yè)面中,設置Session.Timeout = 30;即可臨時(shí)修改某頁(yè)面的會(huì )話(huà)過(guò)期時(shí)間。
查看某個(gè)Session的過(guò)期時(shí)間,可以用
代碼如下:
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>
以上四處設置的優(yōu)先級為頁(yè)面級>應用程序級>網(wǎng)站級>服務(wù)器級。換句話(huà)說(shuō),如果頁(yè)面設置為20分鐘,網(wǎng)站設置為120分鐘,那么,顯然以20分鐘為生效的過(guò)期時(shí)間。
另外一個(gè)值得注意 的地方。
在設置二處,設置會(huì )話(huà)超時(shí)(SessionState)120分鐘,而同時(shí)用forms認證,設置為“00:15:00”,即15分鐘,并且slidingExpirationo為false,則真正生效的Session過(guò)期時(shí)間是多少呢?
有效的結果是SessionState的設置,即120分鐘。
如果有設置Session過(guò)期時(shí)間沒(méi)有生效的,請檢查以上幾處配置
網(wǎng)上找到的其它方法
1、操作系統:Widnows Server 2003
步驟:開(kāi)始——〉管理工具——〉Internet信息服務(wù)(IIS)管理器——〉網(wǎng)站——〉默認網(wǎng)站——〉右鍵“屬性”——〉主目錄——〉配置——〉選項——〉啟用會(huì )話(huà)狀態(tài)——〉會(huì )話(huà)超時(shí)(在這兒設置你要的超時(shí)時(shí)間,單位分鐘)。確定即可。
2、ASP.NET應用程序中Session過(guò)期時(shí)間的設置
在A(yíng)SP.NET這樣的Web應用中,Session是用來(lái)保存用戶(hù)狀態(tài)的常用手段,不過(guò)由于服務(wù)器內存空間是有限的,所以Session過(guò)期時(shí)間設置是很有必要的。在A(yíng)SP.NET中如何設置Session的過(guò)期時(shí)間呢,很簡(jiǎn)單,修改web.config配置。
具體修改方法如下,在web.config中進(jìn)行如下配置
代碼如下:
<system.web>
<sessionState mode="InProc" timeout="30"/>
</system.web>
在這里指的是Session過(guò)期時(shí)間為30分鐘。也就是說(shuō)30分鐘后如果當前用戶(hù)沒(méi)有操作,那么Session就會(huì )自動(dòng)過(guò)期了。
3、在調用Session的cs頁(yè)中,Load事件里面寫(xiě)以下
代碼如下:
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=" />
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。
Copyright ? 2009-2022 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 特網(wǎng)科技 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 百度云 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站