在同一个域中的2个iframe中加载相同的会话

时间:2010-11-24 23:18:45

标签: asp.net session iframe

我要求在一个页面上有多个iframe,这些iframe彼此互动。我们的应用程序布局方式要求这些iframe在同一会话中运行,以便与其他iframe共享有关所选内容的数据等。

问题在于第一页加载,两个iframe都加载了一个URL,显然在请求中没有会话cookie。因此,两个iframe都会创建一个新会话并将其数据放入其中。但是,它们都会向下发送会话cookie,最后一个请求会覆盖以前的请求。从那里开始,两个iframe都使用相同的会话,但只有最后加载的iframe中包含有效的会话数据。

如果我刷新“容器”页面,一切正常(因为会话cookie有效)。

不幸的是,由于“容器”应用程序的限制,我们无法在那里指定明确的加载顺序。已经想到了那个解决方案......

1 个答案:

答案 0 :(得分:0)

所以我得到了这个(我真的应该在一年前发布这个)...

基本上,当用户加载页面时,我确保会话cookie与当前正在执行的请求相同。因此,在特定用户的#1请求中,我只是正常进行,除非我记下此用户有请求。

在#1期间进入的任何请求仍然在OnBeginRequest中被阻止,直到#1已经初始化了会话。当#1初始化其会话时,他使用会话信息更新共享实例,然后释放所有其他线程。

运作良好。