我需要在我的MVC3项目中使用应用程序级缓存。
我想在控制器中使用这样的东西:
using System.Web.Caching;
protected IMyStuff GetStuff(string stuffkey)
{
var ret = Cache[stuffkey];
if (ret == null)
{
ret = LoadStuffFromDB(stuffkey);
Cache[stuffkey] = ret;
}
return (IMyStuff)ret;
}
这会失败,因为Cache [“foo”]不能编译为“System.Web.Caching.Cache是'type',而是像'variable'一样使用。”
我看到Cache是一个类,但是在控制器中像Session [“asdf”]一样使用它时,网上有很多例子,就像它是一个属性一样。
我做错了什么?
答案 0 :(得分:11)
控制器中有一个名为Session
的属性,但没有名为Cache
的属性。
您应该使用HttpRuntime.Cache
静态属性来获取Cache
对象。
例如:
using System.Web.Caching;
protected IMyStuff GetStuff(string stuffkey)
{
var ret = HttpRuntime.Cache[stuffkey];
if (ret == null)
{
ret = LoadStuffFromDB(stuffkey);
HttpRuntime.Cache[stuffkey] = ret;
}
return (IMyStuff)ret;
}
答案 1 :(得分:0)
MVC中有更新的方法来缓存数据 喜欢 - [的OutputCache(持续时间= 3)] 您也可以在web.config文件中指定它 如下所示: http://dotnetcodr.com/2013/02/07/caching-infrastructure-in-mvc4-with-c-caching-controller-actions/ 如果您正在开发MVC
,这将更加高效和随时可用System.Web.HttpContext.Current.Cache["variable"] = datasetresult
或listObjectResult
即,
System.Web.HttpContext.Current.Cache [“POSSEData”] = MyDevObjBO.GetListOfObjects(); 然后根据需要重新分配: 即, grdViewStuff.DataSource =(List)System.Web.HttpContext.Current.Cache [“POSSEData”];