自定义OutputCache提供程序不工作(调用get但未设置或添加)

时间:2014-03-06 17:01:33

标签: c# asp.net asp.net-mvc-4 caching outputcache

在ASP.NET MVC4应用程序中,我定义了自定义输出缓存提供程序。

我的配置是这样的:

<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)
    {
    ...
    }

当我在debug中运行时,只调用自定义输出缓存提供程序的get方法。从来没有设置或添加。任何帮助将不胜感激......

4 个答案:

答案 0 :(得分:0)

尝试减少持续时间。您定义了几乎无限的缓存持续时间,这意味着在应用程序运行时,它不会再尝试存储缓存项目。

持续时间以秒为单位设置...尝试duration="10"或其他内容,看看会发生什么。

除此之外,您还可以尝试在缓存配置文件中定义enabled="true" location="Server"

答案 1 :(得分:0)

尝试将location属性添加到web.config条目。

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

答案 2 :(得分:0)

检查您在请求期间是否写过任何cookie。如果你写一个cookie,Outputcache不会调用add / set。

答案 3 :(得分: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

用户控件(.ascx文件)中包含的@ OutputCache指令不支持此属性。在页面上指定时,该值必须与outputCacheSettings部分下outputCacheProfiles元素中某个可用条目的名称匹配。如果名称与配置文件条目不匹配,则抛出异常。