服務(wù)熱線
153 8323 9821
在Asp.net應(yīng)用中,很多人會(huì)遇到Session過(guò)期設(shè)置有沖突。其中,可以有四處設(shè)置Session的過(guò)期時(shí)間:
一、全局網(wǎng)站(即服務(wù)器)級(jí)
IIS-網(wǎng)站-屬性-Asp.net-編輯配置-狀態(tài)管理-會(huì)話超時(shí)(分鐘)-設(shè)置為120,即為2小時(shí),即120分鐘后如果當(dāng)前用戶(hù)沒(méi)有操作,那么Session就會(huì)自動(dòng)過(guò)期。
二、網(wǎng)站級(jí)
IIS-網(wǎng)站-具體網(wǎng)站(如DemoSite)-屬性-Asp.net,此時(shí)有兩個(gè)選項(xiàng),一個(gè)是“編輯全局配置”,一個(gè)是“編輯配置”。
如果“編輯全局配置”,就和上個(gè)配置一樣。
如果“編輯配置”,則只對(duì)當(dāng)前網(wǎng)站生效。因?yàn)橐粋€(gè)服務(wù)器可能有很多獨(dú)立網(wǎng)站。
1、繼續(xù)選擇“狀態(tài)管理”-會(huì)話超時(shí)(分鐘)-設(shè)置為360,即360分鐘。效果同上,只不過(guò)只對(duì)當(dāng)前網(wǎng)站生效。
2、身份認(rèn)證-Forms-Cooke超時(shí),選擇"12:00:00",即12個(gè)小時(shí)??蛇x項(xiàng)共有以下八項(xiàng):
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
即最長(zhǎng)24小時(shí),最小15分鐘。這是默認(rèn)的配置。在應(yīng)用中可以自由定制。
三、應(yīng)用程序級(jí)
同網(wǎng)站管理,只不過(guò)作用域僅限當(dāng)前應(yīng)用程序。
四、頁(yè)面級(jí)
在某頁(yè)面中,設(shè)置Session.Timeout = 30;即可臨時(shí)修改某頁(yè)面的會(huì)話過(guò)期時(shí)間。
查看某個(gè)Session的過(guò)期時(shí)間,可以用
view plaincopy to clipboardprint?
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);
其中,二和三的設(shè)置,體現(xiàn)在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>
以上四處設(shè)置的優(yōu)先級(jí)為頁(yè)面級(jí)>應(yīng)用程序級(jí)>網(wǎng)站級(jí)>服務(wù)器級(jí)。換句話說(shuō),如果頁(yè)面設(shè)置為20分鐘,網(wǎng)站設(shè)置為120分鐘,那么,顯然以20分鐘為生效的過(guò)期時(shí)間。
另外一個(gè)值得注意 的地方。
在設(shè)置二處,設(shè)置會(huì)話超時(shí)(SessionState)120分鐘,而同時(shí)用forms認(rèn)證,設(shè)置為“00:15:00”,即15分鐘,并且slidingExpirationo為false,則真正生效的Session過(guò)期時(shí)間是多少呢?
有效的結(jié)果是SessionState的設(shè)置,即120分鐘。
如果有設(shè)置Session過(guò)期時(shí)間沒(méi)有生效的,請(qǐng)檢查以上幾處配置。