0

是否可以跨多个浏览器共享会话对象,如用户对象?我的要求是,如果用户尝试在不同的浏览器(IE、Chrome 或 Fireforx)之间切换,应用程序应该允许导航以及共享用户对象。

4

2 回答 2

1

无法在浏览器之间共享会话,浏览器使用会话 cookie 来唯一标识每个客户端,并将其存储在浏览器内存中。所以不允许一个浏览器访问其他浏览器的内存,这使得不同浏览器之间无法共享会话。阅读有关会话 cookie的更多信息可能会更清楚。

于 2012-07-03T07:42:09.887 回答
0

可能的。但这需要您编写自己的SessionIDManager课程:

http://msdn.microsoft.com/en-us/library/system.web.sessionstate.sessionidmanager.aspx

如果您创建自己的SessionIDManager,您将决定如何确定请求是否属于特定会话。客户端 IP 至少应该是一个参数,一些特定于应用程序的密钥可以是另一个参数,等等。返回的实际会话密钥可以是所有参数散列的合适字符串表示(生成的会话 id对于每个会话必须是唯一的)。

完成后,您SessionIdManager可以将其连接到web.config

<sessionState mode="[mode]" ...
    sessionIDManagerType="[full type name of your class here]" ... />

所以可以做到。

但我个人不会做这样的课程,除非有一些真正令人信服的理由去做:

  • 很容易弄错并为不同的用户混淆会话。
  • 如果不同的用户通过同一个代理访问您的站点怎么办?如果您的站点前面有一个负载均衡器怎么办
    (=所有请求似乎都来自同一个 IP)。等等。

而且,也许最重要的是:

  • 它打破了用户对会话通常如何工作的期望......
于 2012-07-03T08:24:04.653 回答