ASP.NET_SessionID cookie不在请求中,但显示在Page_Load()中

时间:2012-02-16 14:49:52

标签: asp.net cookies

在我的asp.net webapplication的Page_Load()方法中,我有以下内容:

HttpCookie c = Request.Cookies["ASP.NET_SessionId"];
if (c != null) {
    Label1.Text = "Cookie ASP.NET_SessionId sent by client in the request";
}

在我的所有浏览器中,我清除了缓存,cookie等,然后运行应用程序,Label显示找到了cookie,即使Fiddler中的请求标头清楚地显示请求中没有发送cookie。没有办法发送任何cookie,因为不仅在浏览器的内存或硬盘上没有名为ASP.NET_SessionID的cookie,而且正如我之前所说,Fiddler清楚地表明没有使用http请求发送cookie。

Fiddler确实显示http响应有一个Set-Cookie,但这是在Page_Load()执行之后。

所以,我对Page_Load()方法如何找到cookie感到困惑?

感谢您抽出宝贵时间阅读本文。

2 个答案:

答案 0 :(得分:1)

HttpCookieCollection的字符串索引器调用HttpCookieCollection.Get方法。根据{{​​3}},如果cookie尚不存在,Get方法将创建具有指定名称的cookie。

  

如果指定的cookie不存在,则此方法会创建一个新cookie   用那个名字。

这个问题以前烧过我了!

要检查cookie是否存在而不自动创建它,如果不存在,您可以使用类似于我在下面显示的语法:

bool requestCookieSet = Request.Cookies.AllKeys.Contains(myCookieName);

答案 1 :(得分:0)

试试这个insted

if (Request.Cookies["ASP.NET_SessionId"] != null) {
    Label1.Text = "Cookie ASP.NET_SessionId sent by client in the request";
}