是否可以在Web API中使用ASP.NET应用程序缓存?

con*_*att 4 .net asp.net .net-4.5 asp.net-web-api

例如,在ASP.NET页面中,您可以执行类似的操作

Cache.Add({...})并通过访问它Cache["key"].在此上下文中,Cache是System.Web.Caching.Cache对象.

反正在Web API控制器中是否有这种类型的ASP.NET应用程序级缓存?

Bad*_*dri 10

如果您是网络托管,为什么不呢?

var context = HttpContext.Current;

if (context != null)
{
    if (context.Cache["g"] == null)
    {
        context.Cache["g"] = 9.81;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,您通过这样做添加了对ASP.NET的依赖.尽管ASP.NET Web API名称中包含ASP.NET,但Web API与主机无关.也就是说,ASP.NET/IIS不是唯一的托管选项; Web API也可以自托管.在走这条路线之前,你需要考虑一些事情.


Lev*_*evi 10

看一下MemoryCache类.从其MSDN文档:

MemoryCache类与ASP.NET Cache类相似.MemoryCache类有许多用于访问缓存的属性和方法,如果您使用了ASP.NET Cache类,那么您将熟悉它们.Cache和MemoryCache类之间的主要区别在于MemoryCache类已被更改,以使其可供非ASP.NET应用程序的.NET Framework应用程序使用.

您可以自己创建MemoryCache的新实例,也可以通过MemoryCache.Defaultstatic属性使用默认的AppDomain范围实例.

编辑:如果您想使用此类型,则需要添加对System.Runtime.Caching.dll的引用.