Has mencionado lo de los frames y se me ocurrió una idea así de pronto... La escribo como medianamente pueda... pero tengo prisa para pararme a explicarla mas detallada.
El caso es que el ejemplo que me hice para comprobar mi idea de llamar a las variables en vez de con querystring, con <%=variable%> lo he modificado para que la pagina llamada desde el server.execute lea ese querystring pero de la pagina madre....
A ver si lo explico mejor... tu dices que la pagina madre la cargas por completo cada vez que cambias de página.... pues en esas llamadas pasale tus tres variables a la madre en vez de a la del server.execute.. Las lee perfectamente...
Te dejo mi ejemplo para que lo compruebes:
--------------- pagina madre: llamadora.asp ------------------
<%@LANGUAGE="JAVASCRIPT" CODEPAGE="1252"%>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
Hola <% Server.Execute("llamada.asp")%>
</body>
</html>
------------------------------------------------------------------------
El otro archivo que necesitas:
------------ pagina llamada: llamada.asp ----------------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<%=request.QueryString("nombre")%>
</body>
</html>
------------------------------------------------------------------------
En el navegador tienes que hacer la llamada de la siguiente forma:
http://servidor/llamadora.asp?nombre=DVEGA
Funciona!!, lo he comprobado..
Pruebalo.. e intenta aplicarlo a tu portal.. comprobarás que ya no necesitas variables de sesión ni modificar cada página receptora.... Peeeero necesitaras cambiar los enlaces HTML de tu portal que hacen referencia a la pagina madre que necesiten esas variables que quieres pasar por URL.
Cuentame como te va, ok? Vuelvo en un par de horas.
Suerte