在使用global.asax.cs文件时,我附上了一些代码

protected void Session_Start(object sender, EventArgs e)
{

}

然后开始注意到在使用chrome时每个请求都调用了Session_Start 使用firefox时,情况并非如此,只调用一次。 可能是什么导致了这个?

需要注意的是,这只适用于我的开发机器。 我编译并运行代码,打开firefox,浏览到http://localhost:63893/并点击Session_Start 在Firefox中浏览时,它只会遇到Session_Start一次。

当我打开chrome并浏览到http://localhost:63893/它会点击Session_Start 然后输入我的登录数据和命中登录,并且它击中Session_Start另一个时间,然后它击中Session_Start 另一个时间,同时加载下一个页面的GET请求。 我使用了一个计数器来查看,实际上在那段时间内创建了3个独特的会话。

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

方法1:

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

永远不会被解雇,我可以确认旧会议仍然存在。

方法2:

使用Session["KeepAlive"] = true; Session_Start中查看是否会阻止_Start被调用,但事实并非如此。 _End仍未调用。

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

===============>>#1 票数:6 已采纳

感谢所有评论方面的帮助。 我们实际上通过聊天和链接到博客文章解决了这个问题: 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方法并将其转换为创建过多Sessions的Session_Start方法。

它一直到Session_Start的原因是因为谷歌浏览器不会发送带有favicon请求的cookie 所以,对于所有那些虽然是cookie问题的人:你是对的。

非常简单的解决所有烦恼,只是添加到我的RegisterRoutes方法

routes.IgnoreRoute("favicon.ico");

现在谷歌每次想要我的图标时都不再获得会话。

  ask by Travis J translate from so

未解决问题?本站智能推荐:

关注微信公众号