我在与Safari会话中存储Guid密钥时遇到问题。该代码在IE,Chrome和Firefox中可以正常运行,但是由于某些原因Safari无法更新会话变量。这是问题的示例:
sessionOutputOne.InnerHtml = Session["TopicId"]; //Old topic ID d158e4f2-c0ac-41ce-8798-e936afaf67f8
Session["TopicId"] = someobject.GuidId.ToString();
sessionOutputTwo.InnerHtml = Session["TopicId"]; //Shows new topic Id f72850a4-c29f-4d1e-ab46-7939c097a002
如果刷新页面,则第一个Session [“ TopicId”]输出将在除Safari之外的每个浏览器中显示新的主题ID(f72850a4-c29f-4d1e-ab46-7939c097a002),该浏览器将继续显示旧ID(d158e4f2-c0ac-41ce -8798-e936afaf67f8)。
基于其他stackoverflow线程,我消除了以下可能性:
设置会话变量后,没有页面重定向有效。
没有在iframe中设置会话变量,但Google产品网站上存在iframe。
我不是想在此会话变量中存储任何复杂的东西,而只是将GUID转换为字符串。
Cookies在Safari中未禁用,并且我的其他Safari浏览器上的客户也遇到了同样的问题。
有关此问题的其他线索:当我打开Safari的“私人浏览”模式时,会话变量确实设置成功。
预先感谢您对我还能研究的其他见解。
更新:
因此,情节变得越来越厚。我在根Default.aspx.cs文件中找到了Response.Redirect,它将登录的用户重定向到子目录。注释掉此重定向可使会话正常工作;但是,似乎连重定向都没有被击中。如果我用Response.End()替换重定向以终止响应,则站点中的所有内容都可以正常工作-如果直接点击首页,首页只会死掉,而不是将登录用户重定向到其内容。
解决方案
得益于Steven在调试方面的不懈努力,我终于能够至少弄清正在发生的事情,如果不是原因的话。由于某些原因,Safari在加载“浏览主题”页面时会触摸我们的根Default.aspx文件(可能在幕后以某种方式)。Default.aspx重定向回浏览主题页面,而没有查询字符串变量。然后,浏览页面将清除会话变量,以将其设置为默认topicid。我很困惑。我的解决方案是检查Default.aspx中的Session [“ TopicId”],并使用querystring变量将其重定向到“浏览”页面,因为我不知道如何防止Safari浏览器访问此页面。
您是否尝试过清除cookie并进行测试?看看您是否可以清除Cookie。
Session.Remove("TopicId");
如果您可以清除cookie,请尝试在清除后将cookie重置为新值。
Session.Add("TopicId",someObject.GuidId.ToString());
基于用户更新:基于您的更新,您是否尝试过:
Response.Redirect(url, false);
添加该参数(false)不会终止线程,而是继续执行该线程上的代码。让我知道结果。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句