近期做了一个web的小东西,可是访问时发现了Session的覆盖问题,网上也找了很多资料,可是没有立竿见影的效果,有的说加随机数,有的说URL重写。而且说得都很模糊,最后终于在网上找到了一个很简单的解决办法。
问题跟服务器端的Session一点关系都没有,问题的根本所在就是你打开的IE浏览器窗口都属于同一个IE进程,如果每个IE窗口都隶属与独立的IE进程,就解决了这个问题。
解决办法:
打开注册表编辑器,定位到
[ HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\BrowseNewProcess]和
[ HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\BrowseNewProcess]
(前者对所有用户账户生效、后者只对当前用户账户生效),将其中的字符串值“BrowseNewProcess”的值,修改为“yes”(不含引号),确认后重启系统。
当然这个方法的缺点就是所有的客户端都要更改注册表
图示:
备注:
1)注册表更改成功的话,每打开一个新的IE,任务管理器中就会新建一个叫做IEXPLORER.EXE的进程。
2)使用HttpWatch查看Request的请求时发现,问题不应该描述成Session覆盖,因为如果窗口都隶属于同一个IE进程的话,第一次发送请求,服务器端会创建一个新的Session,以后的所有IE请求都会使用这个SessionID号向服务器检索第一次请求时已经创建的Session。