我不确定为什么会这样。在同一个程序中,我正在使用有效的会话。现在我想在用户不发送cookie时使我的网站兼容(这应该很简单)。我写了
long userId, loginId;
//...
//put data into cookies
HttpContext.Current.Session.Add("userId", userId.ToString());
HttpContext.Current.Session.Add("loginId", loginId.ToString());
我发现在这个陈述中它们是空的
var cookies = HttpContext.Current.Request.Cookies;
long mUserId;
string u, id;
if (cookies["userId"] == null)
{
//these are null
u = (string)HttpContext.Current.Session["userId"];
id = (string)HttpContext.Current.Session["loginId"];
}
在我设置会话后,在两种情况下(工作和不工作)我都会调用
HttpContext.Current.Response.Redirect("someUrl");`
答案 0 :(得分:3)
如CSharpAtl所述,这是设计:
但是,在web.config中,如果您将会话设置为无cookie,则应该可以正常工作但是它会向网址添加会话ID。
以下是来自MSDN的文章: http://msdn.microsoft.com/en-us/library/aa479314.aspx
答案 1 :(得分:2)
如果客户端不接受cookie,则不能使用SessionState,因为存在于cookie中的会话状态的密钥必须用于在回发时检索会话状态