我们正在将基于Web的软件从带有Internet Explorer 6的Windows XP升级到带有Internet Explorer 9的Windows 7。
此外,在WPF应用程序中使用了一个webbrowser对象。
我们现在有一个奇怪的行为,当打开一个带有url的窗口(使用window.open(url)这样的指令)时,ASP会话“丢失”,新窗口使用新的从头开始会话。< / p>
我通过避免无用的窗口打开解决了这个问题,而是修改了当前窗口的位置。但我想了解为什么会出现这种行为!
你有任何线索吗?
谢谢。
答案 0 :(得分:3)
这可能是由于您的域名有所不同,如果您在www.yoursite.com上运行但窗口指向yoursite.com,则会创建一个新会话。一个讨厌的人,所以要注意它。
此外,您可能会在页面中的某个位置浮动一些调试代码,这可能会导致很多人头疼,清除会话变量以进行测试。还有其他需要检查的东西,但是你永远都不知道。
答案 1 :(得分:2)
假设您的导航全部转到同一个域,那么另一个原因可能是切换进程。从IE8开始,IE“chrome”和标签内容分为两个过程。 IE可以为不同的窗口和标签中的内容创建多个内容流程。
如果您的应用程序托管了一个web浏览器控件,然后启动一个完整的IE窗口,则可能是您的新URL正在被另一个进程(iexpore.exe)请求,而不是您的应用程序进程。因此,请求无法访问会话cookie,因此会话显示为“丢失”。
(值得注意的是,同一进程树中的多个iexplore.exe进程实例具有相互共享会话cookie的方法。)
答案 2 :(得分:1)
我认为您可能遇到this answer解决的问题。基本上,这可能是由于您正在使用的特定计算机上的IE中的安全区错误。正如其他人已经注意到的那样,我可以重申,只要域名没有变化,会话就被带入javascript打开的其他IE(6,7,8,9)窗口。
祝你好运!答案 3 :(得分:0)