PRB: Session Variables Are Lost When ASP Is Located in Frameset


Session variables that are defined in an Active Server Pages (ASP) page are empty when you attempt to access the values from other ASP pages within the frameset.


Internet Explorer 4.x and 5 cannot host the different frames of a frameset in the same process. Because ASP sessions are dependent on a Cookie that resides in the memory of the hosted process, different processes result in different Session Cookies and, therefore, different Sessions.


If your application must support Internet Explorer 4.x or Internet Explorer 5, then you should replace Session variables with Cookies. Ensure that the Cookies have an expiration date. This will result in the Cookie being written to disk. Regardless of which process the frame is hosted in, all frames will gather the Cookie information from the same location on disk.

For example, replace the following code

  Session("MyVariable") = "MyValue"
  Response.Cookies("MyVariable") = "MyValue"
Response.Cookies("MyVariable").Expires = Now() + 1 '24 hours
Note that Cookies must be written before any output is streamed to the browser. You may also need to enable output buffering on your page with the following code:
<%@ Language=VBScript %>
Response.Buffer = True
IIS 5.0 ASP pages have output buffering enabled by default. IIS 4.0 ASP pages do not.

NOTE: This behavior has been resolved with Internet Explorer 5.5.


For additional information, click the article number below to view the article in the Microsoft Knowledge Base:

196383 FIX: Windows Opened by Script Lose Authentication or Session

Id. de artículo: 178037 - Última revisión: 08/14/2008 - Revisión: 1