asp.net-mvc – 使用缓存配置文件缓存ChildActions将不起作用?

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – 使用缓存配置文件缓存ChildActions将不起作用?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试使用缓存配置文件来缓存我的mvc应用程序中的子操作,但是我遇到一个例外:持续时间必须是正数。

我的web.config看起来像这样:

<caching>
      <outputCache enableOutputCache="true" />
      <outputCacheSettings>
        <outputCacheProfiles>
          <add name="TopCategories" duration="3600" enabled="true" varyByParam="none" />
        </outputCacheProfiles>
      </outputCacheSettings>
</caching>

而我的小孩行动如下:

[ChildActionOnly]
[OutputCache(CacheProfile = "TopCategories")]
//[OutputCache(Duration = 60)]
public PartialViewResult TopCategories()
{
    //...
    return PartialView();
}

在一个视图中,我只是调用@ Html.RenderAction(“TopCategories”,“Category”)

但是我收到一个错误
异常详细信息:System.InvalidOperationException:持续时间必须是正数。

如果我不使用缓存配置文件,它可以工作。有一个想法有什么问题吗?

解决方法

我在 related question做了一些挖掘,看着mvc 3的源码,他们绝对不支持Duration和VaryByParam以外的任何属性。他们当前实现的主要缺点是,如果您不提供任何一个,您将收到异常,告诉您提供,而不是例外,表示您尝试使用的不支持。另一个主要问题是即使您关闭了web.config中的缓存,它们也将缓存,这似乎真的很跛脚而不是正确。

我所拥有的最大的问题是,他们使用的是同一个属性,它们在两个视图和部分视图中都有效果,但实际上它应该是2个不同的属性,因为部分视图是有限的,行为方式有很大差异,至少在目前的实施中。

猜你在找的asp.Net相关文章