铬在session_start获取调用过于频繁 [英] Session_Start getting called too often in chrome

查看:177
本文介绍了铬在session_start获取调用过于频繁的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

虽然与的global.asax.cs 文件玩弄我附加了一些code里面的

While playing around with the global.asax.cs file I attached some code inside of

protected void Session_Start(object sender, EventArgs e)
{

}

,然后开始注意到,在session_start 使用Chrome时正被每个请求调用。当使用火狐,这种情况并非如此,它只是调用一次。可能是什么原因?

and then started to notice that Session_Start was being called at every request when using chrome. When using firefox, this was not the case and it was only called once. What could be causing this?

要注意,这只是我的dev的机器。我编译和运行code,打开Firefox,浏览到的http://本地主机:63893 / 和它击中在session_start 。而在Firefox浏览它只击中在session_start 一次。

To note, this is only on my dev machine. I compile and run the code, open firefox, browse to http://localhost:63893/ and it hits Session_Start. While browsing in firefox it only hits Session_Start once.

当我打开Chrome,浏览到的http://本地主机:63893 / 它击中在session_start 。接着我输入我的登录数据和命中登录,然后它击中在session_start 另一个时间,然后它击中在session_start 另一个的时间,同时加载下一个页面的GET请求。我用了一个柜台看到,事实上,3个独特的会议分别在此期间创建的。

When I open chrome and browse to http://localhost:63893/ it hits Session_Start. Then I enter my login data and hit login, and it hits Session_Start another time, and then it hits Session_Start another time while loading the get request for the next page. I used a counter to see, and in fact 3 unique sessions were created during that time.

我知道还是有一些状态,当没有值存储在其会话被放弃的来源。这将在这里罚款解释对我来说,却并非如此。我反驳这两个方法。

I know that there are some sources which state that a Session is abandoned when no value is stored in it. That would be a fine explanation here for me, but it is not the case. I disproved this from two methods.

方法1:

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

从不解雇,我可以证实,旧会话仍present。

Never fired, and I can confirm that the old sessions are still present.

方法2:

用于会话[的KeepAlive] =真; 在session_start 里面,看看是否会prevent _Start 被调用,但事实并非如此。 _END 仍然没有被调用。

Used Session["KeepAlive"] = true; inside of Session_Start to see if that would prevent _Start from being called but it did not. _End was still not called.

什么是两个或我做了什么错误之间如此不同?

What is so different between the two or what have I done wrong?

推荐答案

感谢您的评论所有帮助。的http://tobiefysh.blogspot.co.uk/2010/12/chrome-is-eating-my-session-varibles-or.html

Thanks for all the help in comments. We actually resolved this in chat and through a link to a blog post: http://tobiefysh.blogspot.co.uk/2010/12/chrome-is-eating-my-session-varibles-or.html

这说明了有试图去的favicon.ico 时,302响应。基本上,铬请求favicon.ico的,它被击中的RegisterRoutes 方法,并使它成为它创建在session_start 方法过多的会话。

It explains that there was a 302 response when trying to get to favicon.ico. Basically, chrome is requesting favicon.ico, it is hitting the RegisterRoutes method and making it into the Session_Start method which creates excessive Sessions.

这使得它一路在session_start 的原因是因为的的ID = 114082相对=nofollow>谷歌浏览器不发送的cookie。所以,所有那些谁虽然这是一个cookie的问题:你是对的。

The reason it makes it all the way to Session_Start is because google chrome does not send cookies with favicon requests. So, to all those who though it was a cookie issue: you were right.

pretty简单的解决所有烦恼,只是增加了这对我的的RegisterRoutes

Pretty simple fix for all the annoyance, just added this to my RegisterRoutes method

routes.IgnoreRoute("favicon.ico");

现在谷歌不再是他们想要我的图标,每次获得一个会话。

Now google no longer gets a session every time they want my icon.

这篇关于铬在session_start获取调用过于频繁的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆