会话cookie由ASP.NET重置

时间:2010-03-16 14:06:34

标签: asp.net

我的网站包含单个aspx页面和少量资源,如图片,js和样式表。当页面打开时,它生成Asp.Net_SessionId,它在获取其他资源时使用,但随后资源会重置ASP.NET_SessionId并带有响应。可以做些什么呢?

Default.aspx:
Request:
Cookie ASP.NET_SessionId=

Response
Set-Cookie ASP.NET_SessionId=pf31rzumimjurdmdhc1qgq45; expires=Tue, 16-Mar-2010 14:21:43 GMT; path=/; HttpOnly

Default.css:
Request:
Cookie ASP.NET_SessionId=pf31rzumimjurdmdhc1qgq45

Response:
Set-Cookie ASP.NET_SessionId=; expires=Tue, 16-Mar-2010 14:21:44 GMT; path=/

这让我发疯。它只发生在我设置sessionCookie.Expire值时。此外,有时它很好,有时像上面的描述:(

2 个答案:

答案 0 :(得分:4)

您是否在Session对象中存储了任何内容?如果没有,ASP.NET将不会持久保存您的会话并在每个请求上使用新的会话ID。解决方案是存储一些虚拟值,例如

Session("Dummy") = 1

在访问会话ID之前。

答案 1 :(得分:0)

在global.asax

private void Session_Start(Object sender, EventArgs e)
{
   Session.Add("blerg",1);
}

我无法测试。此外,在IIS6上,默认情况下,静态文件是直接提供的,无需通过ASP.NET isapi过滤器,因此如果您不使用通配符映射,这一切都是徒劳的 - 您将不会进行任何会话静态文件,如果它不通过ASP.NET管道。 Cassini / VS Dev Server都通过ASP.NET管道发送所有静态文件。我不知道IIS7中静态文件的默认行为是什么。