繁体   English   中英

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

[英]Is it possible to use ASP.NET application caching in web API?

例如,在ASP.NET页中,您将执行以下操作

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

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

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

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也可以是自托管的。 在走那条路线之前,您需要考虑一些事项。

看一下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的引用。

如果要引用ASP.NET Web API中的输出缓存。 看一下这个项目,

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

您需要输入

HttpContext.Current.Cache

访问实例。 Controller级别上没有声明Cache属性,例如在Page

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM