加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-16 00:29:28 所属栏目:asp.Net 来源:网络整理
导读:我正在尝试使用缓存配置文件来缓存我的mvc应用程序中的子操作,但是我遇到一个例外:持续时间必须是正数。 我的web.config看起来像这样: caching outputCache enableOutputCache="true" / outputCacheSettings outputCacheProfiles add name="TopCategories
我正在尝试使用缓存配置文件来缓存我的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个不同的属性,因为部分视图是有限的,行为方式有很大差异,至少在目前的实施中。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读