[英]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.