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