今天继续就昨天所说到的session问题进行研究,从保存sessionId的cookie着手
cookieName | 可选的 属性。 指定存储会话标识符的 Cookie 的名称。 此属性是 .NET Framework 2.0 版中的新属性。 默认值为 "ASP.NET_SessionId"。 |
以上是从msdn上查出的用来进行session保存的cookie名称。写小代码继续测试session在客户端的诞生时间.
因为cookie是通过http的header进行传播的,所以遍历header看session所对应的cookie情况。
![ContractedBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![ExpandedBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
protected void Button1_Click(object sender, EventArgs e)
{
String[] arr1 = Request.Headers.AllKeys;
for (int loop1 = 0; loop1 < arr1.Length; loop1++)
{
Response.Write("Key: " + arr1[loop1] + "<br />");
// Get all values under this key.
String[] arr2 = Request.Headers.GetValues(arr1[loop1]);
for (int loop2 = 0; loop2 < arr2.Length; loop2++)
{
Response.Write("Value " + loop2 + ": " + Server.HtmlEncode(arr2[loop2]) + "<br />");
}
}
}
通过以上代码,可以得出,但session没有利用时(诸如Session[key] = value),客户端请求过来的header中是找不到Cookie的,否则会存在如下信息:
Key: Cookie
Value 0: ASP.NET_SessionId=oixmjt45benufn45xm3pf355
这确实说明了,当session未使用时,客户端的确是不存在sessionId的。