iOS和ASP.NET上的ASP.NET_SessionId cookie铬

时间:2013-11-27 02:00:27

标签: ios asp.net-mvc session-cookies

我正在使用HttpContext.Current.Session.IsNewSession来决定在我的MVC4应用程序启动时要显示的页面。

这适用于桌面版iOS游戏。

但是在iOS Chrome上,每次我关闭浏览器(实际关闭标签并从任务管理器关闭应用程序)并重新启动它时,IsNewSession始终为false。

我猜它使用会话cookie ASP.NET_SessionId来跟踪它,因为当我关闭桌面或Safari时会有一个新的cookie值。

然而,在iOS Chrome上,当我关闭并重新启动时,cookie具有旧值 - 我猜这是问题的根源。

那么为什么iOS / Chrome不清除我的ASP.NET_SessionId cookie,即使它应该是一个Session cookie并在浏览器关闭时被删除。

感谢。

1 个答案:

答案 0 :(得分:1)

我怀疑这是因为许多现代移动操作系统的设计特征使应用程序在你想到的时候并没有真正关闭。

使用桌面应用程序,您需要更多screen real estate,因此管理Windows和多任务更容易。因此,当你完成它时,关闭应用程序会感觉很自然和必要。

然而,对于移动应用程序,更多的关注点是用户能够无缝地打开和切换应用程序,因此关闭或最小化应用程序的概念被抽象出来并由操作系统处理。

这意味着当您关闭Chrome时,它并未真正关闭(并且在您再次进入应用之前可能根本不会关闭)。因此,会话永远不会被清除。

如果您force close该应用,那么您的功能将按预期工作。

我可以为你的问题考虑没有优雅的解决方法。一个想法是为用户存储上次活动的时间,如果它大于例如5分钟,那么您可以向他们显示您的启动页面。