两个ASP.NET_SessionId cookie如何突然出现在Cookie列表中?

时间:2010-12-02 07:32:15

标签: asp.net-mvc session-timeout

我在生产系统中遇到(非常)间歇性问题,用户有时会在从一个页面导航到另一个页面时收到会话超时消息(在web.config文件中超时设置为20分钟,但是这个发生在30秒内的请求之间。)

我设法获得其中一个超时的Fiddler会话,并发现触发超时的请求在标头中有两个ASP.NET会话Cookie。我怀疑ASP.NET正在拿起新的会话ID并认为它是一个新的会话。

这是最后一个没问题的请求:

POST https://************/****/****/GetBenefits HTTP/1.1
x-requested-with: XMLHttpRequest
Accept-Language: en-au
Referer: https://********/****/****/****/eabacef3-3fc1-4c7a-a2f9-6b13294cae0d
Accept: application/json, text/javascript, */*
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
Host: ********
Content-Length: 272
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: __utma=234635549.1047786296.1290759252.1290759252.1291100928.2; __utmz=234635549.1291100928.2.2.utmcsr=localhost:1600|utmccn=(referral)|utmcmd=referral|utmcct=/X/****/****/****/a4ae2246-5b3c-42a9-8c43-b6f24f1838d5; SIVISITOR=MC4xMTAuMjA0ODY3NjQ1NDAwODIuMTI5MDc1OTI1MTgxMw__*; ASP.NET_SessionId=l0tsk4jwbp1v51mu3f3e4o55; __RequestVerificationToken_Lw__=JqfrynFIDnS1wc6aFWqP5WVsahQDipJzgrD/iFFfAZBUjbJX/EDrXokuyBzvNkArAjD1UBU6cKFitP1T0gI9RLUU8MIIemT2wkf0PNJhiA5dNZMNRf7PhlRpDf0zN8QCHGbd3w==

<content removed>

这包含一个会话条目:ASP.NET_SessionId = l0tsk4jwbp1v51mu3f​​3e4o55;

返回会话超时的消息是这样的:

POST https://********/****/****/UpdateProductCosts HTTP/1.1
x-requested-with: XMLHttpRequest
Accept-Language: en-au
Referer: https://********/****/****/****/eabacef3-3fc1-4c7a-a2f9-6b13294cae0d
Accept: text/html, */*
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
Host: ********
Content-Length: 351
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: __utma=234635549.1047786296.1290759252.1291100928.1291267008.3; __utmz=234635549.1291100928.2.2.utmcsr=localhost:1600|utmccn=(referral)|utmcmd=referral|utmcct=/X/****/****/****/a4ae2246-5b3c-42a9-8c43-b6f24f1838d5; SIVISITOR=MC4xMTAuMjA0ODY3NjQ1NDAwODIuMTI5MDc1OTI1MTgxMw__*; ASP.NET_SessionId=0tluyjvt4dgroov05xqalg55; __utmb=234635549.1.10.1291267008; __utmc=234635549; ASP.NET_SessionId=l0tsk4jwbp1v51mu3f3e4o55; __RequestVerificationToken_Lw__=JqfrynFIDnS1wc6aFWqP5WVsahQDipJzgrD/iFFfAZBUjbJX/EDrXokuyBzvNkArAjD1UBU6cKFitP1T0gI9RLUU8MIIemT2wkf0PNJhiA5dNZMNRf7PhlRpDf0zN8QCHGbd3w==

<content removed>

这包含两个会话条目:ASP.NET_SessionId = 0tluyjvt4dgroov05xqalg55; ASP.NET_SessionId = l0tsk4jwbp1v51mu3f​​3e4o55;

这本身对我来说很奇怪。

我想知道的是第二个会话ID出现的原因。这是怎么发生的,我该如何解决?

该应用程序是基于ASP.NET MVC 1.0的网站。

非常欢迎任何想法或答案!

干杯, 阿德里安。

1 个答案:

答案 0 :(得分:0)

使用IECookieViewer或Firebug帮助您确定Cookie是否来自同一目录。 Cookie可以来自根(或任何上层)目录,也可以来自当前应用程序。那些cookie mgmt程序应该可以帮到你。