2009-07-30 44 views
138

我已經非常努力地嘗試過,但找不到如何爲ASP.Net Web應用程序的進程內會話設置會話超時值的解決方案。如何在web.config中設置會話超時

我使用的是VSTS 2008 + .Net 3.5 + C#。這是我自己寫的設置超時時間爲1分鐘,這是正確的嗎?

我在web.config

<sessionState timeout="1" mode="InProc" /> 
+5

了定義的超時是正確的方式。你有任何問題嗎? – 2009-07-30 10:54:05

+4

是的,它的罰款.. – 2009-07-30 10:55:19

+7

你知道這意味着它將在1分鐘的不活動之後過期,而不是從開始1分鐘後過期嗎?我的猜測是,如果你問這個問題,並且正確輸入了超時時間,你可能會誤解它的工作原理。 – 2009-07-30 10:59:11

回答

255

下的System.Web節中寫道如果你想將超時設置爲20分鐘,使用這樣的:

<configuration> 
    <system.web> 
    <sessionState timeout="20"></sessionState> 
    </system.web> 
</configuration> 

應該看到您的權利

44

您在timeout屬性中設置的值是設置會話超時值的正確方法之一。

timeout屬性指定會話在放棄之前可以閒置的分鐘數。此屬性的默認值爲20.

通過爲此屬性分配值1,您已將會話設置爲在閒置後1分鐘內放棄。

要進行測試,創建一個簡單的aspx頁面,並且在Page_Load事件寫代碼,

Response.Write(Session.SessionID); 

打開瀏覽器,進入該頁面。會話ID將被打印。等待一分鐘,然後刷新。會話ID將改變。

現在,如果我的猜測是正確的,您希望在會話超時後立即讓用戶註銷。這樣做,你可以拼湊一個登錄頁面,它將驗證用戶憑據,創建這樣一個會話變量 -

Session["UserId"] = 1; 

現在,你將必須執行每一個頁面上的復像這樣這個變量 -

if(Session["UserId"] == null) 
    Response.Redirect("login.aspx"); 

這是一個如何工作的簡單例子。

但是,爲了使您的產品質量安全的應用程序,請使用由ASP.NET提供的Roles & Membership類。他們提供基於表單的身份驗證,這是您正在嘗試使用的正常基於會話的身份驗證更可靠。

1

使用這web.config

<sessionState 
    mode="InProc" 
    stateConnectionString="tcpip=127.0.0.1:42424" 
    sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" 
    cookieless="false" 
    timeout="20" 
/>