This question is not specific to .net, but I imagine that it's something that a .net developer might run into...

I'm developing a web app that uses the HttpSession to store session info. I want the user to be able to have multiple browser windows open. Each browser window shares the same HttpSession. However, the user experience should be that each browser window has its own independet application state, which does not get affected by the other windows. So I added a hidden form field to the HTML called "conversationId", the intention being that each browser window would have a different conversationId. When the user opens a new window, the app notices that there is no conversationId request parameter, and initializes conversationId to a new unique value. The conversationId is then used as a level of indirection to data inside the HttpSession. (In order to maintain the conversationId hidden variable, the web app only uses PUT requests.)

This all work perfectly in Firefox. But it doesn't work with IE6 or IE7.

Here's the difference... With Firefox, if the user opens a new browser window (using control-N or File/New), the window comes up blank. The user can then access the app via a bookmark. The app detects that there is no hidden conversationId variable, and creates a new uniqeu conversationId. Voila, everything works great.

But on IE, when the user opens a new window (using control-N or File/New), IE clones the existing window. Both the URL and the HTML (including the hidden conversationId form field) are cloned too. So the new window has a conversationId that is identical to the previous window.

We've already considered and rejected the idea of adding a "new window" button.

I imagine that other apps must have encountered this issue. Is there a solution?
posted by:
Mike
SF Bay Area