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


Responder a