在我的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感到困惑?
感谢您抽出宝贵时间阅读本文。
答案 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";
}