2014-04-02 109 views
9

對於我的網站我配置的登錄會話超時1周在web.config文件會話超時不適用於asp.net mvc 4 C#。爲什麼?

<system.web> 
    <httpRuntime /> 

    <!-- Session keeps for 7 days --> 
    <sessionState timeout="10080"></sessionState> 
    <authentication mode="Forms"> 
     <forms loginUrl="~/" timeout="10080" slidingExpiration="true"/> 
    </authentication> 
    <!-- Configuration end --> 
</system.web> 

這裏是登錄代碼

[AllowAnonymous] 
    [HttpPost] 
    public ActionResult Login(string Login, string Password) 
    { 
     // empty passwords are not allowed 
     if (Password == "") 
      return Redirect(Request.UrlReferrer.ToString()); 

     bool LoginResult = WebSecurity.Login(Login, Password, true); 
     return Redirect(Request.UrlReferrer.ToString()); 
    } 

我登錄,關閉瀏覽器,然後再次打開它去我網站 - >用戶登錄。 我關閉瀏覽器,等待一段時間(大約30分鐘)去我的網站 - >用戶註銷。 爲什麼?會議應存儲7天,但我們甚至沒有30分鐘。 Whan可能是問題的根源?

編輯1主要的想法是,我想回去到現場數天,並仍與登錄用戶

+0

您確定要在上次訪問後將數據保留在內存中7天嗎? –

+0

是的,這是內部網站,只有3個用戶,我累了每次輸入憑證 – Vitalii

+0

當我們從mvc3移動到4時,我們遇到同樣的問題。 – MBen

回答

10

可能打開它,你IIS將被配置爲20分鐘TimeOut

更改IIS會話超時爲 1周 24小時,我希望能解決您的問題。

參見this

通過設計,超時的最大值被設定爲24小時。看看微軟的支持forum

爲了達到超時一個更大的窗口,你可以考慮保持會話狀態中SQL,通過@Marc的建議。

+0

我發現這個值,但出現了另一個問題。我不能在那裏設置超過23:59小時。我至少需要幾個。 – Vitalii

1

當應用程序空閒(沒有請求一段時間)時,IIS可能會關閉它。這將破壞所有Sessions

Authentication將它的數據存儲在數據庫中,因此在重新啓動後仍然存在。

3

嘗試將會話狀態移入Sql(link here)。這應該堅持一個IIS重新啓動/應用程序池回收等。