2013-01-25 332 views
0

我已經閱讀了一些其他線程從這裏和外面,但沒有工作......我有幾個Sessions像(登錄,列的值...)。我想設置一個時間來Sessions到期...我已經試過:設置會話超時時間

Session.TimeOut = "60"; 

,並使用web.cfg

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

我像每一個的Page_Load測試Session

if(Session["login"] == null) 
{ 
    Response.Redirect("/Login.aspx"); 
} 

但似乎Session迷失在導航的中間,因爲在某個時候(1分鐘,5分鐘,2分鐘......)它返回到login page。這裏有什麼可能是錯的? 我也讀到Membership Authentication一些文章,但我無法得到它= \
感謝

+0

您是否註銷並重定向到登錄頁面,因爲會話實際已過期.....? –

+0

嗯,我這麼認爲,因爲還有什麼呢?如果會話爲空,我在每個頁面上都測試了'Session'我重定向到login.aspx ...你有什麼想法? – Ghaleon

+0

這是'秒',不'minuts'? – Ghaleon

回答

0

您應該檢查,如果你不重定向到一個不同的(子)域。在每個域中,用戶將獲得一個sepperate會話。例如:

http://ww.mydomain.com 
http://wwww.mydomain.com 

已開始會話。

+0

Humm ...我不知道回答這個問題。我有兩個母版頁,它是子頁面......我只是重定向到這些頁面......我怎麼能知道這一點? ; s 謝謝! – Ghaleon

+0

在瀏覽器中查看您的網址。 – Peter

+0

唯一改變的是頁面的名稱。 /xxx.aspx – Ghaleon

0

一旦應用程序池回收,您也將失去會話。看看這個鏈接http://blogs.msdn.com/b/johan/archive/2007/05/16/common-reasons-why-your-application-pool-may-unexpectedly-recycle.aspx,如果你發現任何有用的東西,可能會幫助你解決問題。

我曾經有過類似的問題,會話超時在web.config中設置爲60分鐘,但會話在20分鐘後仍然丟失。原因是IIS設置中的錯誤設置導致應用程序池回收並因此會話消失。