我为我的 MVC 应用程序创建了一个自定义缓存提供程序。我将使用此类将会话数据存储/检索到外部服务(如 memcached 或 Redis)。
我想在应用程序启动时创建一次对象实例,以便我可以从任何控制器引用该对象,并且只需“新建”一次实例。我在想我会在 Global.asax Application_Start 方法中实例化该类。但是,该实例似乎无法在任何控制器中访问。
在 MVC 中实例化然后访问(全局)类的首选方法是什么?
这是我的“简化”课程的副本:
public class PersistentSession : IPersistentSession
{
// prepare Dependency Injection
public ICache cacheProvider { get; set; }
public bool SetSessionValue(string key, string value)
{
return cacheProvider.PutToCache(key, value);
}
public bool SetSessionValue(string key, string value, TimeSpan expirationTimeSpan)
{
return cacheProvider.PutToCache(key, value, expirationTimeSpan);
}
public string FetchSessionValue(string key)
{
return cacheProvider.FetchFromCache(key);
}
}
我想实例化一次,以便我可以从所有控制器应用程序范围内访问它,如下所示:
// setup PersistentSession object
persistentSession = new PersistentSession();
string memcachedAddress = WebConfigurationManager.AppSettings["MemcachedAddress"].ToString();
string memcachedPort = WebConfigurationManager.AppSettings["MemcachedPort"].ToString();
persistentSession.cacheProvider = new CacheProcessor.Memcached(memcachedAddress, memcachedPort);
应该在 MVC 中的何处/如何实例化对象以从所有控制器获取全局访问权限?