Es posible guardar un objeto propio en la session

30/05/2005 - 10:05 por Jose Cortijo | Informe spam
Buenos dias a todos,

he creado una clase q me permite almacenar dos arrays y un string y quiero
guardar todo el objeto en si en una variable de session,
el codigo ASP que crea la clase es el siguiente, posteriromente hago un
include en al ASP donde uso dicha clase.

<%
Class Parametros

private sUrl
private aParametros
private aValorParametros

private indice
private dimension

Private Sub Class_Initialize()

End Sub

Public Property Let UrlDestino( pUrl )
response.Write("Guardamosw la url -->" & pUrl)
sUrl = pUrl
End Property

Public Default Property Get obtenerUrlDestino()
obtenerUrlDestino = sUrl
End Property

Public Function Create( pDimension )

redim aParametros(pDimension)
redim aValorParametros(pDimension)
dimension = pDimension
indice = 0

End Function

Public Function guardarParametro( pParametro, pValor)
response.Write("<br>Guardando " &pParametro& " - " &pValor& " con indice "
&indice& " y dimension " & dimension )
if indice > dimension then
response.Write("Error al guardar el parametro " & pParametro & " por
exceder la dimension del objeto ")
else
aParametros(indice) = pParametro
aValorParametros(indice)= pValor
indice = indice + 1
end if

End Function

Public Function obtenerParametros()

response.write("<br>La URL destino es :" & sUrl & "<br>Los parametros
son:")
for i=0 to indice-1
response.Write("<br>" & aParametros(i) & " = " & aValorParametros(i) )
next

End Function

End Class
%>

posteriormente en otro ASP creo un objeto del tipo Parametros, le doy
valores y lo guardo en la session de la siguiente manera:

Dim oParam
Set oParam = New Parametros
oParam.Create 2
oParam.UrlDestino = "http://www.google.es"
oParam.guardarParametro "pNombre","Jose"
oParam.guardarParametro "pApellidos","Martines"
session("parametros") = oParam

en otro ASP intento recoger el objeto de la siguiente manera

dim prueba
Set prueba = New Parametros
prueba = session("parametros")

y me da un error
Error de Microsoft VBScript en tiempo de ejecución error '800a01a8'

Se requiere un objeto: 'http://www.google.es'

viendo el contenido de la session , veo que solo ha guardado ciertos texto
que he ido mostrando con response.write dentro del objeto.

¿hay que poner algun comando especial para subir el objeto completo a la
session? ¿ como lo recupero luego?

Muchas gracias por cualquier sugerencia.

Un saludo a todos

Preguntas similare

Leer las respuestas

#1 Manuel Vera
30/05/2005 - 16:20 | Informe spam
1.- Lo que estas haciendo NO es recomendable por asunto de performance del
servidor web.
2.- Si lo puedes hacer, creo que sería así:
... tu codigo es...
posteriormente en otro ASP creo un objeto del tipo Parametros, le doy
valores y lo guardo en la session de la siguiente manera:

Dim oParam
Set oParam = New Parametros
oParam.Create 2
oParam.UrlDestino = "http://www.google.es"
oParam.guardarParametro "pNombre","Jose"
oParam.guardarParametro "pApellidos","Martines"
'''AQUI:
SET session("parametros") = oParam
...fin...
creo que asi funcionaria

3.- Lo que te esta sucediendo, a mi forma de ver, es que a la session le
estas asignando la propiedad por DEFAULT de tu objeto: sURL

Finalmente, esta practica NO es recomendable de todos modos.

Salu2
MV
Respuesta Responder a este mensaje
#2 Matias Iacono
30/05/2005 - 20:00 | Informe spam
Totalmente de acuerdo.

Lo que comentas Manuel esta, desde todos los puntos, correcto.

Y como muestras en el codigo, tambien esta bien orientado.

Al querer meter un objeto dentro del session, debes setear este a ese tipo
de objeto.

Por ello, necesitas hacer: set session = objeto

Y lo mismo tendras que hacer a la inversa:

set MiNuevoObjeto = session.

De cualquier manera, el mantener objetos dentro de los session no es
recomendable, ya que esto requiere de grandes cantidades de memoria en el
servidor... y mas si llega a ser un sitio web muy concurrido.

Saludos,

Matías Iacono
Microsoft MVP ASP/ASP.net - DCE3

Profile: http://aspnet2.com/mvp.ashx?MatiasIacono
"Manuel Vera" escribió en el mensaje
news:ehw8%
1.- Lo que estas haciendo NO es recomendable por asunto de performance del
servidor web.
2.- Si lo puedes hacer, creo que sería así:
... tu codigo es...
posteriormente en otro ASP creo un objeto del tipo Parametros, le doy
valores y lo guardo en la session de la siguiente manera:

Dim oParam
Set oParam = New Parametros
oParam.Create 2
oParam.UrlDestino = "http://www.google.es"
oParam.guardarParametro "pNombre","Jose"
oParam.guardarParametro "pApellidos","Martines"
'''AQUI:
SET session("parametros") = oParam
...fin...
creo que asi funcionaria

3.- Lo que te esta sucediendo, a mi forma de ver, es que a la session le
estas asignando la propiedad por DEFAULT de tu objeto: sURL

Finalmente, esta practica NO es recomendable de todos modos.

Salu2
MV


Respuesta Responder a este mensaje
#3 Jose Cortijo
31/05/2005 - 13:34 | Informe spam
Estoy deacuerdo tambien yo con lo que no es muy recomendable el subir
objetos a la session, pero se trata de una intranet donde como mucho pueden
haber 10 clientes simultaneos conectados, no creo que el coste sea muy
grande y hacerlo de otra manera es mas complicado.

Queria preguntaros una ultima cosa, he hecho lo que me deciais de usar el
set y ahora me da un error al recuperar el objeto de la session, me dice que
no encuentra el metodo.

Necesito hacer algun cast o algo al tipo de dato Parametros?

el codigo quedo como sigue,es codigo del mismo ASP que se llama a sí mismo
para hacer las pruebas:

..
dim prueba

if not isnull(session("parametros")) then
set prueba = session("parametros")
prueba.obtenerParametros()
end if

Dim oParam
Set oParam = New Parametros
oParam.Create 5
oParam.UrlDestino = "http://www.google.es"
oParam.guardarParametro "pNombre","Jose"
oParam.guardarParametro "pApellidos","Cortijo Solera"

set session("parametros") = oParam
.

y el error exacto es :

Error de Microsoft VBScript en tiempo de ejecución error '800a01b6'

El objeto no acepta esta propiedad o método: 'obtenerParametros'

/Administracion/Alojamiento/gestion_viviendas/listaViviendas.asp, line 11

Muchas gracias de antemano por vuestra ayuda, sugerencias y opiniones.

Un saludo,
Jose


"Matias Iacono" escribió en el mensaje
news:%
Totalmente de acuerdo.

Lo que comentas Manuel esta, desde todos los puntos, correcto.

Y como muestras en el codigo, tambien esta bien orientado.

Al querer meter un objeto dentro del session, debes setear este a ese tipo
de objeto.

Por ello, necesitas hacer: set session = objeto

Y lo mismo tendras que hacer a la inversa:

set MiNuevoObjeto = session.

De cualquier manera, el mantener objetos dentro de los session no es
recomendable, ya que esto requiere de grandes cantidades de memoria en el
servidor... y mas si llega a ser un sitio web muy concurrido.

Saludos,

Matías Iacono
Microsoft MVP ASP/ASP.net - DCE3

Profile: http://aspnet2.com/mvp.ashx?MatiasIacono
"Manuel Vera" escribió en el mensaje
news:ehw8%
1.- Lo que estas haciendo NO es recomendable por asunto de performance
del
servidor web.
2.- Si lo puedes hacer, creo que sería así:
... tu codigo es...
posteriormente en otro ASP creo un objeto del tipo Parametros, le doy
valores y lo guardo en la session de la siguiente manera:

Dim oParam
Set oParam = New Parametros
oParam.Create 2
oParam.UrlDestino = "http://www.google.es"
oParam.guardarParametro "pNombre","Jose"
oParam.guardarParametro "pApellidos","Martines"
'''AQUI:
SET session("parametros") = oParam
...fin...
creo que asi funcionaria

3.- Lo que te esta sucediendo, a mi forma de ver, es que a la session le
estas asignando la propiedad por DEFAULT de tu objeto: sURL

Finalmente, esta practica NO es recomendable de todos modos.

Salu2
MV






email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida