我正在使用IIS託管我的WCF應用程序。爲了服務某些方法,我需要一個對大量初始化的幫助對象的引用。一個好的方案是初始化一次並放入緩存中,然後所有請求只使用緩存中的對象。我如何做緩存?在不同服務主機中啓動的wcf服務的常見緩存
最簡單的方法是使用mywebmethod的靜態字段。 IIS創建多個ServiceHosts來爲請求提供服務。並且在每個servicehost中,靜態字段將會不同。
我aso嘗試使用System.Web.HttpRuntime.Cache
。同樣,我有一些獨立的緩存。爲了澄清,我需要不緩存請求的結果,但需要處理請求的一些中間數據。
那麼有什麼解決方案?
我發現IIS的真正問題不在不同的服務主機中。他們可以通過HttpContext.Cache屬性成功共享System.Web.Caching.Cache對象(至少適用於httpBindings)。 .Net爲每個AppDomain創建一個Cache對象。如果IIS在AppPool中使用多個工作進程(在IIS 7中默認爲10),它顯然會自然創建100個AppDomain和10個單獨的緩存。 – flashnik 2010-01-26 10:42:04