如果我主持一个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
文本,但点击后Session对象始终为null
我是否有一个选项需要打开/关闭以使用正常的会话变量?
在IIS 6.0和Cassini上运行正常(在VS 2008和2010下)。
我开始对正在发生的事情没有任何想法:o(
非常感谢任何帮助!
上面的示例页面的过程
更多测试表明这只发生在IE(在这种情况下是ie8),Firefox,Safari,Opera,Chrome他们都给出了正确的“答案”
答案 0 :(得分:2)
问题可能是域中的下划线。删除_并查看是否发生了同样的事情
答案 1 :(得分:0)
会话ID由浏览器通过本地存储的cookie维护。
您是否正在运行某种阻止IE8存储Cookie的保护模式?状态栏上应该有一个红色警告图标。“...阻止此站点存储cookie”