簡體   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