[英]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中的输出缓存。 看一下这个项目,
您需要输入
HttpContext.Current.Cache
访问实例。 在Controller
级别上没有声明Cache
属性,例如在Page
。
请注意,托管API的上下文将需要支持缓存。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.