2013-07-19 89 views
13

我有一個帶有剃鬚刀視圖引擎的Asp.net Mvc應用程序,其中我使用了一個變量Session['user']:當用戶登錄應用程序Session['user'] = login並在註銷時變量取值爲Null在asp.net mvc中更改會話變量超時的默認值

問題是,有一個短暫的超時和會話變量過期:如果我自動登錄應用程序Session['user'] =null後一分鐘內什麼都不做。

那麼我怎樣才能設置會話的變量的超時時間是無限的,直到它被程序改變了?任何建議?

回答

24

那麼我怎麼才能設置會話的變量無限,直到被程序改變了嗎?有什麼建議超時?

您無法將timeout值設置爲無限制。

可以使用sessionState元素的timeout屬性在web.config中增加時間在幾分鐘值。


會話狀態設置

默認情況下,ASP.NET使用Cookie來標識屬於一個特定的會話請求。 如果cookie不可用,則可以通過向URL添加會話標識符來跟蹤會話。 要禁用cookie,設置sessionState cookieless="true". (120 =分鐘)

<sessionState mode="StateServer" cookieless="false" timeout="120"/> 

看看這個Session-Time out

11

您不能將其分配給無限制。您可以增加使用超時會話狀態元素的屬性分鐘值web.config

<sessionState timeout="30"> 
</sessionState> 

默認情況下,會話超時值是20分鐘。另外如果您使用窗體身份驗證的情況下,檢查認證超時值以及

<authentication mode="Forms"> 
    <forms loginUrl="logon.aspx" 
    protection="All" path="/" timeout="30" /> 
</authentication> 
7

它的會話,而不是變量的超時。設置它的配置在幾分鐘

<sessionState timeout="30" /> 
5

這是不可能的設置會話超時到:無限。而是將會話時間設置爲高值示例:

<configuration> 
    <system.web> 
    <sessionState mode="InProc" timeout="350" /> 
    </system.web> 
</configuration>