【问题标题】:IE8 does not keep Session VariablesIE8 不保留会话变量
【发布时间】:2011-04-09 04:20:24
【问题描述】:

如果我托管一个 ASP.NET 页面:

<%@ Page Language="C#" %>
<!DOCTYPE html>
<script runat="server">

    protected void btn_Click(object sender, EventArgs e)
    {
        lbl.Text = HttpContext.Current.Session["a"] == null ? 
                      "null" : 
                      HttpContext.Current.Session["a"].ToString();
    }
    protected void btn_Click2(object sender, EventArgs e)
    {
        lbl.Text = HttpContext.Current.Cache["a"] == null ? 
                      "null" : 
                      HttpContext.Current.Cache["a"].ToString();
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            HttpContext.Current.Session["a"] = "CBA";
            lbl.Text = "assigned Session Variable";

            HttpContext.Current.Cache.Add(
                    "a", "ABC", null, 
                    DateTime.Now.AddHours(2), TimeSpan.Zero, 
                    CacheItemPriority.NotRemovable, null);
        }
    }

</script>

<html>
<head>
    <title>Testing Session</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Button ID="btn" runat="server" Text="read Session" OnClick="btn_Click" />&nbsp;&nbsp;
        <asp:Button ID="btn2" runat="server" Text="read Cache" OnClick="btn_Click2" />
        <hr />
        <asp:Label ID="lbl" runat="server" />
    </div>
    </form>
</body>
</html>

在第一次运行时,我确实得到了 assigned Session Variable 文本,但在单击时,会话对象始终是 null

我需要打开/关闭一个选项来使用正常的会话变量吗?

在 IIS 6.0 和 Cassini 上运行良好(在 VS 2008 和 2010 下)。

我开始对发生的事情一无所知 :o(

非常感谢任何帮助!


以上示例页面的流程


更多测试表明这只发生在 IE(本例中为 ie8)、Firefox、Safari、Opera、Chrome 他们都给出了正确的“答案”


查看screen cast of the situation

【问题讨论】:

  • 代码看起来与示例不同。 “重新加载”会触发哪个点击事件?处理缓存或会话的那个?
  • 是的,我最终还添加了一个Cache 按钮,只是为了看看缓存是如何处理的......它确实可以正确处理,但我确实需要会话变量,因为我希望每个用户都有它们,而不是每个应用程序,数据是我真的不需要缓存的东西。 ScreenCast 有新代码(我的问题开头的示例代码)
  • 我遇到了同样的问题...有人知道可能是什么问题吗?该网站在 Firefox 上运行良好,但用户(遍布全国)使用 IE8。该网站在 IE8 中运行良好,直到几天前。我找不到解释!
  • @alejandro 我知道一个解释,但它没有帮助 :( 这一切都始于 Windows 更新 之后,这很愚蠢,网站运行良好,之后,会话不是保留。我会将问题指向 DNS/IE 问题,就好像您将机器名称更改为服务器的 IP 地址一样,一切正常。

标签: iis-7 internet-explorer-8 session-state session-variables


【解决方案1】:

会话 ID 由浏览器通过本地存储的 cookie 维护。

您是否在某种保护模式下运行以阻止 IE8 存储 cookie?状态栏上应该有一个红色警告图标..“...阻止此站点存储 cookie”

【讨论】:

  • 我已经将 IE 设置全部设为“低”,将域添加到受信任的站点,在高级设置中我什至添加了显示不信任内容的选项......但我所做的一切,我得到相同的(我确实重新启动 IE):o(
【解决方案2】:

问题可能是域中的下划线。删除 _ 看看是否会发生同样的事情

【讨论】:

猜你喜欢
  • 2023-03-19
  • 2011-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-01
  • 1970-01-01
相关资源
最近更新 更多