Hola Diego, Al ser un nuevo thread Win no necesitarías Id de sessión dado que ese thread lo esta ejecutando un único usuario a la vez. Yo en su momento tuve que luchar con toda esa parte y resolví tener el wrapper del context en mi propio framework, el cual solo se limita a trabajar con httpcontext o callcontext dependiendo el entorno de ejecución. Luego por otro lado cree algo que denomine WorkSpace, el cual me resolvió dos partes, cache y session. Básicamente es un diccionario shared con mutex y demás, que adicionalmente guarda información de la fecha de última lectura. Adicionalmente existe una tarea que se ejecuta cada cierto tiempo y va eliminando de este diccionario los objetos que tienen más tiempo sin ser accedidos. A los key del diccionario adiciono el SessionId o nada dependiendo del entorno de ejecución. De esta manera tengo cache tanto para web como para win y además cache para objetos compatibles con el tiempo de vida de session y application (Web). Algo de esto voy a mostrar el jueves que viene en el Mug 8-) Saludos, Damián Herrera
_____ From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf Of Diego Baselica Sent: Thursday, August 16, 2007 6:12 PM To: [email protected] Subject: [puntonet] HttplContext (Session y Aplication) damian, esto hice algo similar a lo que vos mencionas Pero tengo un problema, ya qiue seguramente encare algo mal de entrada Cuando Incia mi aplicacion tengo un Objeto USApplication que contiene informacion de la empresa que inicio y otros datos generales, que lo pongo en HttpContext.Current.Aplication("USApp") Cuando un usuario inicia sesion tengo otro objeto USSession que tiene el IDUsuario, fecha inicio, procesos a lso que puede acceder, etc, que lo pongo en HttpContext.Current.Session("USSes") Luego tengo un Helper que GetApp --> que devuelve el valor de HttpContext.Current.Aplication("USApp") GetSes --> que devuelve el valor de HttpContext.Current.Session("USSes") En capas de servicios/mapers por ejemplo tengo un proceso que consulta datos y debe obtener siempre los del usuario que se logueo, entonces armo un filtro con el usuario de la session Ej: "IDUser = " & GetSes.IDUser Hasta ahi venia todo bien Cuando se invoca desde un WebService, y las llamadas en capas subsiguientes, Servicios, Entidades, Mapper, tengo acceso al HttpContext.Current Resulta que ahora tuve que hacer unos procesos en el logion de usuario, Ej, ejecutar tareas programadas del usuario al inicio de sesion, que generan algun reporte y lo envian por mail Pero esto no lo puedo hace rsincronico en el login, porque sino el ingreso del usuario demora mucho. Entonces se me ocurrio lanzar la ejecucion de esas tareas en un Thread distinto Pero me encontre que el HttpContext.Current no existe mas, Nothing, y por lo tanto mis metodos GetApp y GetSes dan error y no puedo utiliza los valores Creo que el tema es que no deberia almacenar mis objetos en el HttpContext.Current, Con el obketo USAplication, lo veo factible de ponerlo como una variable Shared o algo similar, pero con las sesiones, necesito que de alguna forma poder devolver la sesion de usuario y no lo veo, Pensaba un diccionario shared, pero con que key lo acceso, ya que tampoco tengo el HttpContext.Current.SessionID Alguna idea??? Ing. Diego M. Basélica e-mail: [EMAIL PROTECTED] UpSoft Sistemas Informáticos Rafael Nuñez 3498 (X5009CFO) Córdoba, Argentina Tel/Fax: 0351-4814812 (rot.) www.upsoft.com.ar _____ De: [email protected] [mailto:[EMAIL PROTECTED] En nombre de Damián Herrera Enviado el: Jueves, 16 de Agosto de 2007 15:33 Para: [email protected] Asunto: [puntonet] HttplContext (Session y Aplication) Hola Diego, Podes crearte una especie de wrapper tuyo que encapsule el uso de HttpContext y de acuerdo al contexto en el que corres (Web o Win) utilizas el contexto adecuado. Yo por ejemplo lo utilizo de esta manera: Public Shared Sub [Add](ByVal pKey As String, ByVal pValue As Object) Mutex.WaitOne() If HttpContext.Current Is Nothing Then CallContext.FreeNamedDataSlot(pKey) CallContext.SetData(pKey, pValue) Else HttpContext.Current.Items.Remove(pKey) HttpContext.Current.Items.Add(pKey, pValue) End If Mutex.ReleaseMutex() End Sub Saludos, Damián Herrera _____ From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf Of Diego Baselica Sent: Thursday, August 16, 2007 1:44 PM To: [email protected] Subject: [puntonet] HttplContext (Session y Aplication) Hola estoy buscando una solucion para reemplazar el HttpContext.Current, ya que alli estao almacenando mis objetos de sesion de usuario, pero cuando utilizo otros hilos de ejecucion, pierdo dicho contexto y mi proceso falla Buscando encontre una supuesta solucion en el sitio de AJlopez Create <http://www.ajlopez.net/ArticuloVe.php?Id=634> your own HttpContext class , pero el link no funciona, asi que queria saber si alguien por casualidad tiene elgo de este material o referirme a otro lugar donde buscarlo. O alguna otra solucion para este tipo de problemas Muchas gracias <mailto:[EMAIL PROTECTED]> Ing. Diego M. Basélica e-mail: [EMAIL PROTECTED] UpSoft Sistemas Informáticos Rafael Nuñez 3498 (X5009CFO) Córdoba, Argentina Tel/Fax: 0351-4814812 (rot.) www.upsoft.com.ar __________ Información de NOD32 2466 (20070816) __________ Este mensaje ha sido analizado con NOD32 Antivirus System http://www.nod32.com
