Recently had an issues with a server upgrade from IIS 6 on Windows 2003 
to IIS 7.5 on Windows 2008 R2 64 bit.
We have a number of websites running on Classic 
ASP. All the sites sit under a particular site, e.g. www.example.com/foo and www.example.com/foobar.
On IIS 6 each site was set up as a virtual directory and things worked fine. Since moving 
to the new set up, a lot of websites seem 
to have mixed Sessions. 
To be clear, this is not a app pool recycling issue; rather the sessions are populated with information when the user hits the site and while browsing they get sessions from different sites.
We've determined this based on
- a few customers called up and reported having their shopping cart with items with names of items belonging 
to a different site
- also our own testing showed that some queries being run would try 
to bring products in from a different site
We've tried
- disabling dynamic caching
- converting each site 
to be a virtual application (if I understand correctly, the virtual directory/application concepts were changed/refined somewhat in IIS 7 although 
to be honest, I'm not clear what the difference is)
- various application pool changes (using .
NET 2 framework), classic and integrated modes, changing the Process model 
to NetworkIdentity), all 
to no avail.
The only thing we haven't tried is changing it 
to run as a 32 bit application.
We're not using http only cookies, so when I open up a browser and type 
document.cookie
into the dev console in Firefox/Chrome/IE that there will be multiple ASPSESSIONID=... values whereas previously I believe there was only one.
Finally, we use server side JScript for the classic 
ASP pages, not VBScript, so we have code similar 
to the below.
//the user's login account as a jscript object
Session("user") = { email : "
[email protected]", id : 123 }; 
and if we execute a line of code like below:
Response.Write( typeof(Session("user")) );
When things are running correctly, we get "object" - as expected.
When the Session gets trashed, the output is "unknown" and we are also unable 
to access the fields within the JScript object (e.g. the .email or .id fields).
Much appreciated if anyone can provide any pointers about how 
to resolve this, everything on google seems 
to point 
to different issues.