IE8不保留会话变量

bal*_*dre 5 iis-7 session-variables session-state internet-explorer-8

如果我托管一个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>
Run Code Online (Sandbox Code Playgroud)

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

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

适用于IIS 6.0和Cassini(在VS 2008和2010下).

我开始对正在发生的事情没有任何想法:o(

任何帮助是极大的赞赏!


上面的示例页面的过程

替代文字

替代文字


更多的测试表明,这只发生在IE(在这种情况下是ie8),Firefox,Safari,Opera,Chrome他们都给出了正确的"答案"

替代文字


检查情况的屏幕演员

Rod*_*lfo 2

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