Safari C浏览器中的.NET C#会话变量未更新

时间:2016-03-03 18:10:49

标签: c# session safari

我在与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

如果我刷新页面,第一个会话[" TopicId"]输出会在每个浏览器中显示新的主题ID(f72850a4-c29f-4d1e-ab46-7939c097a002),除了Safari,它继续显示旧id(d158e4f2-c0ac-41ce-8798-e936afaf67f8)。

我已根据其他stackoverflow线程消除了以下可能性:

  1. 设置会话变量后,没有页面重定向生效。

  2. 会话变量未在iframe中设置,但网站上有针对Google产品的iframe。

  3. 我不是试图在此会话变量中存储任何复杂的内容,只是将guid转换为字符串。

  4. Safari中未禁用Cookie,我在其他Safari浏览器上遇到同样问题的客户。

  5. 关于此的补充线索:当我打开Safari"私密浏览"时,会话变量确实成功设置了模式。

    提前感谢您对我可以研究的其他内容的任何见解。

    更新:

    因此情节越来越浓。我在我的根Default.aspx.cs文件中找到了一个Response.Redirect,它将登录用户重定向到子目录。注释掉这个重定向可以使会话正常工作;但是,重定向似乎没有被击中。如果我用Response.End()替换重定向来终止响应,那么站点中的所有内容都会继续正常工作 - 只有当您直接点击主页而不是将登录用户重定向到其内容时,主页才会终止。

    解决方案

    感谢Steven对我的调试的持续帮助,我终于能够至少弄清楚发生了什么,如果不是为什么。出于某种原因,Safari在加载浏览主题页面时会触及我们的根Default.aspx文件(可能在幕后,不知何故)。 Default.aspx重定向回浏览主题页面而没有查询字符串变量。然后,Browse页面将清除会话变量以将其设置为默认的topicid。我知道,非常复杂。我的解决方案是检查Default.aspx中的Session [" TopicId"]并让它重定向到带有querystring变量的Browse页面,因为我无法弄清楚如何阻止Safari访问此页面。 / p>

1 个答案:

答案 0 :(得分:1)

您是否尝试过清除Cookie并对其进行测试?看看你是否可以清除cookie。

Session.Remove("TopicId");

如果您可以清除cookie,请尝试在清除新值后重置cookie。

Session.Add("TopicId",someObject.GuidId.ToString());

基于用户更新的更新 基于你,你有没有尝试过:

Response.Redirect(url, false);

添加参数(false)不会中止线程并继续执行该线程上的代码。让我知道结果。