Session_Start在chrome中经常被调用

本文关键字:调用 chrome Start Session | 更新日期: 2023-09-27 18:09:28

在处理global.asax.cs文件时,我在

中附加了一些代码
protected void Session_Start(object sender, EventArgs e)
{
}

,然后开始注意到Session_Start在使用chrome时的每个请求都被调用。当使用firefox时,情况并非如此,它只被调用一次。是什么原因造成的呢?

注意,这只在我的开发机器上。我编译并运行代码,打开firefox,浏览到http://localhost:63893/,它击中了Session_Start。在火狐浏览器中,它只点击一次Session_Start

当我打开chrome浏览器,浏览到http://localhost:63893/,它击中Session_Start。然后我输入我的登录数据并点击login,它再次点击Session_Start,然后在加载下一页的get请求时再次点击Session_Start 。我使用计数器来查看,实际上在此期间创建了3个唯一的会话。

我知道有一些源声明会话在没有存储值时被放弃。这对我来说是一个很好的解释,但事实并非如此。我用两种方法反驳了这一观点。

方法1:

protected void Session_End(){} /*breakpoint*/

从未触发,并且我可以确认旧的会话仍然存在。

方法2:

Session_Start内部使用Session["KeepAlive"] = true;,看看是否会阻止_Start被调用,但没有。_End仍未调用。

两者之间有什么不同,或者我做错了什么?

Session_Start在chrome中经常被调用

感谢所有评论的帮助。我们实际上在聊天中解决了这个问题,并通过一个链接到博客文章:http://tobiefysh.blogspot.co.uk/2010/12/chrome-is-eating-my-session-varibles-or.html

它解释了there was a 302 response when trying to get to favicon.ico。基本上,chrome正在请求favicon.ico,它正在击中RegisterRoutes方法并使其进入Session_Start方法,这会创建过多的会话。

之所以一直到Session_Start,是因为google chrome不发送带有favicon请求的cookie。所以,对于那些认为这是饼干问题的人:你是对的。

非常简单的修复所有的烦恼,只是把它添加到我的RegisterRoutes方法

routes.IgnoreRoute("favicon.ico");

现在谷歌不再得到会话每次他们想要我的图标