Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Problema con ASP.NET & Session State

Iniciado por BeRSeRKeR, 13 de Julio de 2007, 09:56:57 AM

« anterior - próximo »

BeRSeRKeR

Muy interesante el generador que mencionas. :)

En cuanto al UpdatePanel y el UpdatePanelProgress sí los he visto pero por ahora no lo estoy utilizando. Estoy haciendo uso de la librería del lado cliente para todo.

Gracias.
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

BeRSeRKeR

Hola de nuevo. :)

Tengo otro problemilla, aunque en esta ocasión es HTML/CSS (al final tendré que cambiar el título del mensaje :lol:).

Resulta que yo tengo un cuadro de diálogo (una capa) que cuando se muestra, aparece centrada en el navegador y además se muestra una capa semi-transparente de fondo para evitar que  se haga clic en algún elemento que no sea el cuadro de diálogo. Pero claro, si hay barras de desplazamiento y el usuario las desplaza, la capa ya no ocupará toda la pantalla y el cuadro de diálogo tampoco estará centrado. Evidentemente podría añadir un manejador para el evento de scroll y actualizar posiciones, pero paso de hacer eso.

Así que en lugar de eso, lo que hago es que cuando se muestra el cuadro de diálogo oculto las barras de desplazamiento:

document.getElementsByTagName('html')[0].style.overflow = 'hidden';

y cuando el cuadro de diálogo se cierra, se vuelven a mostrar:

document.getElementsByTagName('html')[0].style.overflow = 'auto';

Pues bien, ésto funciona perfectamente en IE6/7 y Opera, pero en Firefox, justo al ocultar las barras de desplazamiento, la vista se mueve hasta la parte superior de la página. Así que la pregunta es si ésto se puede evitar de alguna forma.

Si no, me imagino que acabaré utilizando el "ModalPopup Extender" que viene con el "Control Toolkit" de MS ASP.NET AJAX. :)

Gracias.
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

Diferencial

Si usas el ModalPopup vas a tener el mismo problema pero siempre quedara en el medio, otra cosa, si usas un modalpopup que no sea para hacer una pantalla que no sea un aceptar y cancelar, si metes muchas cosas puede que no te funcione y tengas problemas.
PARA TENER COSAS QUE NUNCA HAS TENIDO, TENDRÁS QUE HACER COSAS QUE NUNCA HAS HECHO.

BeRSeRKeR

Vale, seguimos con los problemas. Este debe ser una tontería, pero no sé cómo solucionarlo. :lol:

A ver, yo tengo la página con el sistema de identificación de formularios activado. El formulario de identificación se encuentra en "Login.aspx". Además, tengo un "Default.aspx" que automáticamente redirige la respuesta a "Catalogue.aspx".

La cosa va como sigue. Yo pongo en el navegador la URL:

http://localhost:8080

Evidentemente, se coge por defecto la página "Default.aspx". Esta a su vez redirige a "Catalogue.aspx", pero como el usuario no está identificado, me redirecciona a "Login.aspx":

http://localhost:8080/Login.aspx?ReturnUrl=%2fdefault.aspx

Entonces me identifico y como el "ReturnUrl" es "Default.aspx", se va a dicha página que a su vez me redirecciona a "Catalogue.aspx" (como es de esperar).

Bien, ahora estoy en "Catalogue.aspx", hago un pedido y proceso el pedido. Al hacer ésto, me direcciona a "Order.aspx". Pues bien, aquí es donde está el problema. Si yo ahora le doy a botón "volver" del navegador, en Firefox, IE7 y Opera me devuelve a "Catalogue.aspx" (que es lo correcto), pero en IE6 me devuelve a "Login.aspx".

¿A alguien se le ocurre a qué puede deberse?.

Gracias.
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

BeRSeRKeR

Bueno pues parece ser que con el IE6 que tenemos en el servidor web sí funciona.

Es que yo he instalado el pack MultiIE para poder probar en el mismo sistema el IE6 y el 7 y se ve que el IE6 de ese pack tiene algo raro...

Saludos.
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

BeRSeRKeR

Hola.

Ahí va una duda que tengo.

Imaginad que yo tengo una clase "cliente" que sirve como contenedor de datos del cliente que inicia una sesión. Evidentemente una instancia de ese objeto se guarda en la sesión actual.

Ahora, para ahorrar tener que escribir demasiado :lol: cada vez que quiero acceder a alguna propiedad de un cliente:

Customer customer = HttpContext.Current.Session["customer"] as Customer
string profile = customer.Profile;


quiero tener unos métodos estáticos en la clase "cliente" que directamente me devuelvan el valor que yo quiero:

public static string GetProfile()
{
   Customer customer = HttpContext.Current.Session["customer"] as Customer;
   return customer.Profile;
}


De esta forma luego sólo tengo que hacer:

Customer.GetProfile();

Pero aquí es donde está mi duda. ¿Es posible que dos o más clientes (threads) accedan al mismo tiempo a esos métodos estáticos?. Es decir, ¿es posible que un cliente acceda a datos de otro cliente?.

Yo me imagino que no puesto que cada hilo de ejecución activará la sesión que corresponda antes de entrar en el método, pero por si las moscas, pregunto. :lol:

En cualquier caso, ¿esto podría conllevar algún otro poblema que no estoy teniendo en cuenta?.

Gracias.
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

jazcks

no controlo mucho de asp.net, pero creo que el SessionId es único para cada sesion creada,y en teoría identifica al cliente de forma inequivoca, no se puede acceder a los datos de otras sesiones.

El problema puede surgir en el caso de que sin cerrar la misma ventana del navegador (sin cerrar la sesion del navegador),se pida una nueva sesion en el servidor, lo que dará la misma sessionId, dando la impresion que el nuevo cliente accede a los datos del anterior cliente.

lo pone todo en este faq, http://www.eggheadcafe.com/articles/20021016.asp

lo que no se, es si puede ocurrir lo mismo en asp.net que con las sesiones de php, que se almacenan en disco en ficheros temporales, y si por ejemplo estas en un servidor de hosting compartido, todos esos ficheros pueden estar accesibles lo que implica poder ver las sesiones de otros usuarios/sitios

BeRSeRKeR

Sí, efectivamente la sesión se comparte si se abren dos instancias del mismo navegador.

En fín, supongo que es lo que tienen las sesiones. :P

Gracias.
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.