0

我有以下操作方法:-

[HttpGet]
[OutputCache(CacheProfile = "long", Location = OutputCacheLocation.Server, VaryByHeader = "X-Requested-With")]
public PartialViewResult LatestAssets()
{
var tech = repository.LatestTechnology().OrderByDescending(a => a.TechnologyID).Take(5).ToList() ;
return PartialView("_Latest",tech);
}

通过以下代码在 _layout 视图中调用:-

<li class="nav-header hidden-tablet"style="background-color:#3E9BD4 ; color:white">Latest Assets</li>
@Html.Action("LatestAssets","Home")

缓存配置文件在 web.config 中定义如下:-

 <system.web>
    <caching>
      <outputCacheSettings>
        <outputCacheProfiles>
          <add name="long" duration="300" />
          <add name="Short" duration="100" />
        </outputCacheProfiles>
      </outputCacheSettings>
    </caching>

但是当调用动作方法时我得到以下代码: -

持续时间必须是正数。说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.InvalidOperationException:持续时间必须是正数

如果我删除 CacheProfile 上面的工作正常。知道是什么导致了这个错误。

4

2 回答 2

0

您缺少“OutputCache”属性的“持续时间”属性。注意 Duration 以秒为单位设置缓存的生命周期,它必须是大于 0 的整数。

您还缺少必需的“VaryByParam”属性。

尝试这个:

[OutputCache(CacheProfile = "long", Location = OutputCacheLocation.Server, VaryByHeader = "X-Requested-With", Duration = 60, VaryByParam = "*")]

参考:

MVC HTML.RenderAction – 错误:持续时间必须是正数

http://www.dotnetcurry.com/ShowArticle.aspx?ID=665

于 2013-08-24T23:38:34.860 回答
-1

只需使用:

[输出缓存(持续时间 = 1)]

一秒钟几乎等于零,您的问题将得到解决。它对我有用。

于 2014-10-03T16:47:09.060 回答