打开一个新窗口创建一个新会话
我们正在将基于 Web 的软件从带有 Internet Explorer 6 的 Windows XP 升级到带有 Internet Explorer 9 的 Windows 7.
We are upgrading a web-based software from Windows XP with Internet Explorer 6 to Windows 7 with Internet Explorer 9.
此外,Webbrowser 对象在 WPF 应用程序中使用.
Furthermore, a webbrowser object is used inside a WPF application.
我们现在有一个奇怪的行为,当打开一个带有 url 的窗口时(使用类似 window.open(url) 的指令),ASP 会话丢失"并且新窗口与一个新的从头开始的会话一起工作.
We now have a strange behavior, when opening a window with a url (with an instruction like window.open(url)), the ASP session is "lost" and the new window works with a new from scratch session.
我通过避免打开无用的窗口解决了这个问题,而是修改了当前窗口的位置.但我想了解为什么会出现这种行为!
I solved this issue by avoiding useless windows opening and instead, I modify the location of the current window. But I would like to understand why this behavior !
你有什么线索吗?
谢谢.
推荐答案
假设您的导航都转到同一个域,那么另一个原因可能是进程切换.从 IE8 开始,IEchrome"和 tab 内容被分成两个进程.进一步的IE可以为不同窗口和标签中的内容创建多个内容进程.
Assuming your navigation all go to the same domain then another cause for this could be the switching of processes. As of IE8 the IE "chrome" and tab content were seperated into two processes. Further IE can create multiple content processes for content in different windows and tabs.
如果您的应用程序托管了一个 Web 浏览器控件,该控件随后会启动一个完整的 IE 窗口,那么您的新 URL 可能是由另一个进程 (iexpore.exe) 而非您的应用程序进程请求的.结果,请求无法访问会话 cookie,因此会话显示为丢失".
If your app is hosting a webbrowser control which then launches a full IE window, the chances are that your new URL is being requested by another process (iexpore.exe) not your apps process. As a result the request does not have access to session cookies hence the session appears "lost".
(值得注意的是,同一进程树中的多个 iexplore.exe 进程实例具有相互共享会话 cookie 的方法.
(Its worth noting that the multiple iexplore.exe process instances in the same process tree have a means of sharing session cookies with each other).
相关文章