为什么我在定义CacheProfile时得到“持续时间必须是正数。”

时间:2013-08-20 10:29:31

标签: asp.net asp.net-mvc asp.net-mvc-3

我有以下Action方法: -

[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>

但是在调用action方法时我得到以下代码: -

  

持续时间必须是正数。描述:未处理   在执行当前Web请求期间发生异常。   请查看堆栈跟踪以获取有关错误的更多信息   它起源于代码。

     

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

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

2 个答案:

答案 0 :(得分:0)

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

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

试试这个:

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

参考文献:

MVC HTML.RenderAction – Error: Duration must be a positive number

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

答案 1 :(得分:0)

只需使用:

[OutputCache(Duration = 1)]

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