2013-11-27 39 views
0

我使用HttpContext.Current.Session.IsNewSession來決定何時啓動MVC4應用程序時顯示的頁面。iOS和Chrome上的ASP.NET_SessionId cookie

這適用於臺式機,iOS的Safari瀏覽器大。

但是,在iOS Chrome瀏覽器中,每次關閉瀏覽器(實際上關閉選項卡並關閉任務管理器中的應用程序)並重新啓動它時,IsNewSession始終爲false。

我猜測它使用會話cookie ASP.NET_SessionId跟蹤這個,因爲當我關閉我的桌面或Safari瀏覽器時有一個新的cookie值。

但是,在iOS Chrome瀏覽器中,當我關閉並重新啓動cookie時,它具有舊值 - 我猜測它是問題的根源。

那麼,爲什麼iOS/Chrome瀏覽器不清除我的ASP.NET_SessionId cookie,即使它應該是一個會話cookie並在瀏覽器關閉時被刪除。

謝謝。

回答

1

我懷疑這是因爲許多現代移動操作系統的設計特點,即應用程序在您可能想到時並不真正關閉。

在桌面應用程序中,您有更多的screen real estate,因此更容易管理窗口和多任務。因此,關閉應用程序,當你用它做感覺自然和必要的。

但是,對於移動應用程序而言,更多的關注點是用戶能夠無縫地在應用程序之間打開和切換,因此關閉或最小化應用程序的概念被抽象出來並由操作系統來處理。

這意味着當你關閉Chrome瀏覽器時,它並不真正關閉(並且在你再次進入應用程序之前可能不會關閉)。因此會話永遠不會被清除。

如果你force close該應用程序,那麼你的功能將按預期工作。

沒有優雅的解決方法,我可以爲您的問題想到。一個想法是爲用戶存儲上次活動的時間,如果是大於,例如,5分鐘,那麼你可以向他們展示你的啓動頁面。

+0

附加:如果您已經按照Apple的指示強制關閉應用程序,那麼此答案可能不會解釋任何內容,我不知道答案是什麼。 –

+0

感謝您的提示。我強制關閉,這使得事情更加混亂的應用程序。有最後一次訪問的時間可能是我們可以合作的事情,我將不得不把它交給那些有權力的人。 –

相關問題