4

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

Cache.Add({...})并通过Cache["key"]. 在这种情况下,Cache 是System.Web.Caching.Cache对象。

无论如何在 Web API 控制器中执行这种类型的 ASP.NET 应用程序级缓存?

4

4 回答 4

11

看看MemoryCache 类。从其 MSDN 文档中:

MemoryCache 类类似于 ASP.NET Cache 类。MemoryCache 类具有许多用于访问缓存的属性和方法,如果您使用过 ASP.NET Cache 类,您会很熟悉这些属性和方法。Cache 和 MemoryCache 类之间的主要区别在于 MemoryCache 类已被更改,以使其可供非 ASP.NET 应用程序的 .NET Framework 应用程序使用。

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

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

于 2013-05-13T18:19:33.703 回答
10

如果您是虚拟主机,为什么不呢?

var context = HttpContext.Current;

if (context != null)
{
    if (context.Cache["g"] == null)
    {
        context.Cache["g"] = 9.81;
    }
}

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

于 2013-05-13T16:48:40.743 回答
1

你需要输入

HttpContext.Current.Cache

访问实例。没有在该级别Cache声明的属性,例如在.ControllerPage

请注意,托管 API 的上下文需要支持缓存。

于 2014-01-27T15:27:46.443 回答
0

如果您指的是 ASP.NET Web API 中的输出缓存。看看这个项目,

https://github.com/filipw/AspNetWebApi-OutputCache

于 2013-05-13T17:12:53.537 回答