我有一个包含自定义缓存对象的类库的网站,所有项目都在运行.NET 3.5。 我想将这个类转换为使用Session状态而不是缓存,以便在应用程序重启时在状态服务器中保留状态。 然而,当我从Global.asax文件访问方法时,该代码会抛出一个异常,指示"HttpContext.Current.Session为空"。我调用类的方式如下:
Customer customer = CustomerCache.Instance.GetCustomer(authTicket.UserData);
为什么该对象始终为空?
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;
}
}
正如您所看到的,我已尝试将IRequiresSessionState添加到类中,但这并没有任何区别。
Cheers Jens