在IIS 7.5和Windows 2008 R2 64位上与经典ASP混合会话

最近有一个服务器从Windows 2003上的IIS 6升级到Windows 2008 R2 64位上的IIS 7.5的问题。

我们有很多在Classic ASP上运行的网站。 所有网站都位于特定的网站,例如www.example.com/foo和www.example.com/foobar。

在IIS 6上,每个站点都被设置为一个虚拟目录,工作正常。 自从新设立以来,很多网站似乎混合了会话。 要清楚的是,这不是一个应用程序池回收问题; 而是当用户点击该网站并且在浏览时从会话中获得来自不同网站的会话的信息。

我们已经确定了这一点 – 基于几个客户调用,并报告他们的购物车项目名称属于不同的网站 – 我们自己的testing表明,一些查询正在运行将尝试从不同的产品现场

我们已经尝试了 – 禁用dynamiccaching – 将每个站点转换为虚拟应用程序(如果我理解正确,虚拟目录/应用程序概念在IIS 7中有所改变/细化,尽pipe说实话,我不清楚有什么区别是) – 各种应用程序池更改(使用.NET 2框架),经典和集成模式,将过程模型更改为NetworkIdentity)都无济于事。

我们唯一没有尝试的就是将它改为32位应用程序。

我们不使用仅http的cookie,所以当我打开浏览器并input

的document.cookie

进入Firefox / Chrome / IE的开发控制台,将有多个ASPSESSIONID = …值,而以前我相信只有一个。

最后,我们使用服务器端的JScript的经典的ASP页面,而不是VBScript,所以我们有类似于下面的代码。

//用户的login账号作为jscript对象Session(“user”)= {email:“[email protected]”,id:123};

如果我们执行一行代码如下:

Response.Write(typeof(Session(“user”)));

当事情正确运行,我们得到“对象” – 正如所料。 当Session被抛弃时,输出是“unknown”,我们也无法访问JScript对象中的字段(例如.email或.id字段)。

非常感谢,如果任何人都可以提供任何关于如何解决这个问题的指针,谷歌上的一切似乎指向不同的问题。

这仍然听起来很像应用程序池/回收问题。 你确定你实际上是在IIS6下使用ASPSESSIONID cookies,还是有自定义的会话pipe理解决scheme?