在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方法。从来没有设置或添加。任何帮助将不胜感激......
答案 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元素中某个可用条目的名称匹配。如果名称与配置文件条目不匹配,则抛出异常。