我的网站包含单个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值时。此外,有时它很好,有时像上面的描述:(
答案 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中静态文件的默认行为是什么。