如何在外部启动后将会话数据保存在独立的 Web 应用程序中?

How can I persist Session data in a standalone web app after an external launch?

我有一个 MVC 5 移动网站,我正在尝试制作一个独立的移动网络应用程序 运行 在 iPhone 上全屏显示。在应用程序启动外部 link 之前一切正常,例如,它将在 Safari 中启动。 return访问网络应用程序后,会话数据似乎消失了,并分配了一个新的会话 ID,在外部启动之前消除了先前用户进度的任何现有痕迹。但是,用户名保持不变并“登录”。我需要做什么来持久化会话数据?

我已经在这里工作了几个小时,谷歌搜索并尝试不同的方法,但无济于事,我的头在旋转。类似的 post 是 HERE 但我的问题是会话数据。

任何 help/direction 将不胜感激。

更新 1 似乎这种行为仅限于 iOS——目前正在 9.3.3 上测试。无论是使用状态栏中的“返回 [App] 左上角 link 还是双击主页按钮 return 到 WebApp,都具有相同的行为。Android操作系统似乎工作得很好。 看吧。我们正在使用 cookie。

所以它是一个 "Hail-Mary pass" 但它有效...只需将 ASP.NET_SessionId cookie 保留在 javascript 中。它可能在其他地方有效,但这是我所做的:

在 _Layout.vbhtml 中,我将其添加到 $(document).ready:

        if (window.navigator.standalone || window.matchMedia('(display-mode: standalone)').matches) {
            document.cookie = "ASP.NET_SessionId=@(Session.SessionID); " + extendTimeStr(5);            
        }

连同函数:

        function extendTimeStr(extMins) {
            var d = new Date();
            d.setTime(d.getTime() + (extMins*60*1000));
            return "expires="+ d.toUTCString();
        }

奇迹般地,它奏效了!希望对大家有帮助。

AspNetCore 2.0更新:

$(document).ready(function () {
            if (('standalone' in window.navigator) && window.navigator['standalone']) {
                var cookie = '@(Context.Request.Cookies[".AspNetCore.Identity.Application"])';
                document.cookie = ".AspNetCore.Identity.Application=" + cookie + "; " + extendTimeStr(5);
            }
        })

感谢@HumbleBeginnings 为我无法在其他地方找到答案的问题提供了出色而简单的解决方案!