Tengo un sitio web con un objeto Cache personalizado dentro de una biblioteca de clases. Todos los proyectos ejecutan .NET 3.5. Me gustaría convertir esta clase para usar el estado de sesión en lugar de la caché, para preservar el estado en un servidor de estado cuando mi aplicación se recicla. Sin embargo, este código arroja una excepción con "HttpContext.Current.Session is null" cuando visito los métodos de mi archivo Global.asax. Llamo a la clase de esta manera:HttpContext.Current.Session es nulo
Customer customer = CustomerCache.Instance.GetCustomer(authTicket.UserData);
¿Por qué el objeto siempre es nulo?
public class CustomerCache: System.Web.SessionState.IRequiresSessionState
{
private static CustomerCache m_instance;
private static Cache m_cache = HttpContext.Current.Cache;
private CustomerCache()
{
}
public static CustomerCache Instance
{
get
{
if (m_instance == null)
m_instance = new CustomerCache();
return m_instance;
}
}
public void AddCustomer(string key, Customer customer)
{
HttpContext.Current.Session[key] = customer;
m_cache.Insert(key, customer, null, Cache.NoAbsoluteExpiration, new TimeSpan(0, 20, 0), CacheItemPriority.NotRemovable, null);
}
public Customer GetCustomer(string key)
{
object test = HttpContext.Current.Session[ key ];
return m_cache[ key ] as Customer;
}
}
Como se puede ver que he intentado añadir IRequiresSessionState a la clase, pero eso no hace una diferencia.
Saludos Jens
Si intenta acceder a la sesión desde Application_Start, todavía no hay una sesión en vivo. – onof