2017-10-19 320 views
0

我想要的會話持續幾天,即使瀏覽器窗口關閉,所以我在Startup.cs使用此設置:asp.net核心增加會話持續時間。的IdleTimeout不工作

 services.AddSession(options => { 
      options.IdleTimeout = TimeSpan.FromHours(720); 
     }); 

但是,似乎沒有任何效果。即使瀏覽器選項卡與網站保持打開狀態,會話也會在一段時間後重置。我怎樣才能解決這個問題 ?

+0

我有設置IdleTimeout 720分鐘(12小時)完全相同的問題。我的會話在大約5個半小時後仍然過期。我在IIS上運行它,並確保iis中的空閒超時設置爲12小時,並且它不會在錯誤的時間回收應用程序池。還是行不通。 – mikelt21

+0

會話Cookie設置爲過期瀏覽會話因某種原因而結束時。 –

+0

在瀏覽器選項卡仍處於打開狀態時會發生這種情況嗎?當我關閉瀏覽器時,我不介意會話過期,但現在即使我打開網站也會過期。 – mikelt21

回答

1

它發生是因爲會話cookie在session中到期。 IdleTimeout設置應該服務器多久存儲會話,它的「無形」到瀏覽器

在更多的細節:使用CookieBuilderMicrosoft.AspNetCore.SessionMicrosoft.AspNetCore.Http.Abstractions這臺default(DateTimeOffset?)ExpiresCookieOptions的Cuz Expiration.HasValue回報false

如果你將覆蓋記得public override TimeSpan? ExpirationSessionCookieBuilder

+0

你可以發佈一些示例代碼來做到這一點? –