2

我有一个MVC 5手机网站,我正试图让一个独立的移动web应用在iPhone上运行全屏。一切运作良好,直到应用程序启动一个外部链接,例如,将在Safari中启动。返回到Web应用程序后,会话数据似乎消失并分配了新的会话ID,从而在外部启动之前清除以前用户进度的任何现有跟踪。但用户名保持不变并“登录”。我需要做什么来保持会话数据?如何在外部启动后在独立Web应用程序中保留会话数据?

我已经在这里好几个小时了,使用谷歌搜索和尝试不同的方法,但无济于事,我的脑袋正在旋转。类似的帖子是HERE,但我的问题是会话数据。

任何帮助/方向将不胜感激。

UPDATE 1 看来,这种行为仅限于iOS - 目前在9.3.3上进行测试。无论是使用状态栏中的“返回[App]左上角链接”还是双击主页按钮以返回到WebApp,都会发生同样的行为Android操作系统似乎正常工作 Go figure。我们正在使用Cookie。

回答

1

所以这是一个“冰雹玛丽通行证”,但它的工作...只是坚持在JavaScript中ASP.NET_SessionId饼干它可能已在其他地方工作,但这里是我所做的:

在_Layout.vbhtml我添加到了$(文件)。就绪:

 if (window.navigator.standalone || window.matchMedia('(display-mode: standalone)').matches) { 
      document.cookie = "[email protected](Session.SessionID); " + extendTimeStr(5);    
     } 

与函数一起:

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

神奇的是,它的工作!希望它能帮助别人。

0

更新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我无法找到答案,在其他地方!

+0

乐意帮忙,@Tim。 :-)感谢您的AspNetCore 2.0更新。 – HumbleBeginnings

相关问题