2014-03-06 43 views
2

在ASP.NET MVC4應用程序中,我定義了自定義輸出緩存提供程序。自定義輸出緩存提供程序不工作(調用get,但未設置或添加)

我的配置是這樣的:

<system.web> 
     <caching> 
     <outputCache defaultProvider="DiskOutputCache" enableOutputCache="true" > 
     <providers> 
      <add name="DiskOutputCache" type="ProExam.DMC.MvcUtil.DiskOutputCache, ProExam.DMC.MvcUtil, Version=1.0.0.0, Culture=neutral"/> 
     </providers> 
     </outputCache> 
     <outputCacheSettings> 
     <outputCacheProfiles> 
      <add name="forever" duration="2147483647" varyByParam="id" /> 
     </outputCacheProfiles> 
     </outputCacheSettings> 
    </caching> 

我有一個這樣的動作:

[OutputCache(CacheProfile = "forever")] 
    public ActionResult View(UrlParamString id) 
    { 
    ... 
    } 

當我在調試運行中,只有我的自定義輸出緩存提供的get方法被調用。從來沒有設置或添加。任何幫助,將不勝感激...

+0

我有完全相同的問題。但就我而言,這是我介紹VaryByCustom的時候。只有一個varybycustom緩存項調用add/set。當返回下一個自定義值時,不會調用add/set方法! –

+0

我們解決了它。它是由一個過濾器引起的,它總是爲每個請求寫一個cookie。刪除cookie解決了它。 –

回答

0

嘗試縮短持續時間。您定義了一個幾乎無限的緩存持續時間,這意味着應用程序正在運行時,它不會嘗試再次存儲緩存項。

持續時間以秒爲單位設置...嘗試duration="10"或什麼,看看會發生什麼。

除此之外,您還可以嘗試在緩存配置文件中定義enabled="true" location="Server"

0

嘗試將位置屬性添加到web.config條目中。

<add name="LongLivedProfile" duration="86400" location="Any" varyByParam="*" /> 
0

檢查您是否在請求期間不寫入任何cookie。如果你寫了一個cookie,Outputcache不會調用add/set。

0

檢查:Custom OutputCache provider is not working (get is called but not set or add)

如果您使用的cookie它不工作。

還要檢查注意事項一節CacheProfile:https://msdn.microsoft.com/en-us/library/vstudio/hdxfb6cy(v=vs.100).aspx

這個屬性不支持@的OutputCache包含在用戶控件(.ascx文件)的指示。在頁面上指定時,該值必須與outputCacheSettings部分下outputCacheProfiles元素中的一個可用條目的名稱匹配。如果名稱與配置文件條目不匹配,則會引發異常。

相關問題