我有以下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,上面的工作正常。 是什么导致这个错误。
答案 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
答案 1 :(得分:0)
只需使用:
[OutputCache(Duration = 1)]
一秒几乎等于零,你的问题将得到解决。它对我有用。