2011-09-05 69 views
5

在我的web應用程序中,我有一些預先存儲在Page.Cache中的值。在他的時刻,我不得不將這個功能轉移到web服務。可以在webservice中使用Cache嗎?

因此,我需要在webservice中引入類似的功能 - 首次調用web方法時計算值並將其存儲在緩存中。
是否有可能從緩存(不是在應用程序或會話 - 我需要在一段時間間隔後清除這些值)的一些值從Web服務?

+0

'不在應用程序或會話中'您想要使用哪個緩存,一個新的? – TheCodeKing

+0

正如你在下面的答案中看到的 - 有一些像舊的,已知的'緩存':) –

+0

是的,如果是你的問題,試圖找出你的要求是什麼。有Runtime緩存,或者您可以創建自己的緩存。您也可以使用回調過期。 – TheCodeKing

回答

7

即使您目前沒有HttpContext,也可以通過靜態HttpRuntime.Cache屬性來始終訪問Cache。

+0

最簡單的方法 - 這是我一直在尋找的。 –

5

總之 - 是的,你可以在Web服務中使用緩存。您必須根據服務實施選擇正確的緩存實施。例如,如果您使用ASP.NET Web服務,那麼您可以使用ASP.NET Cache - 可通過HttpContext.Current.Cache獲得。

如果您使用WCF Web服務,那麼您可能需要使用其他庫(順便說一句,ASP.NET Web服務已過時,所以我會建議WCF Web服務)。如果WCF服務標記爲與ASP.NET兼容,則ASP.NET基礎結構及其緩存將可用。但是您可以選擇在不使用ASP.NET集成的情況下託管WCF服務,在這種情況下,您可能需要查看不同的緩存API,例如,如果您使用的是.NET 4,則爲System.Runtime.Caching(請參閱quick tutorial以使用內存緩存),否則你可以嘗試Caching Application Block

2

您應該能夠使用:

HttpContext.Current.Cache.Insert(strName, objItem, null, 
    DateTime.Now.AddMinutes(intMinutes), Cache.NoSlidingExpiration) 

緩存項指定的時間間隔。

相關問題