【问题标题】:MVC 4 OutputCache cause error when to use with WebSecurity.IsAuthenticated与 WebSecurity.IsAuthenticated 一起使用时,MVC 4 OutputCache 会导致错误
【发布时间】:2012-09-13 12:26:39
【问题描述】:

我有一个名为“列表”的控制器/操作。该方法内置有属性

[OutputCache(Duration = 3600, VaryByParam = "*")]

这个动作有 3600 秒的缓存,因为从数据库加载数据并且它每 1 小时更改一次(更多/更少)。

它在 Layout.cshtml 上的问题,因为我的主布局(它的主页面),如果经过身份验证的用户或显示静态文本 User 当用户未通过身份验证时。请看下面的代码:

@Html.Raw(WebSecurity.IsAuthenticated ? WebSecurity.CurrentUserName : "User")

当任何人通过身份验证时,页面上第一次访问的名称缓存完成,然后所有用户,通过身份验证或未通过身份验证,请参见标题顶部栏上的第一个经过身份验证的用户的用户名。这很糟糕!

我以为不会做layout.cshtml缓存,只有来自Controller/Action指定的数据。

我该如何解决?

我不喜欢删除 OutputCache,因为它对我来说非常重要。标题顶部栏对所有用户都是通用的,因为它具有内置的布局页面。

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-4 master-pages outputcache


    【解决方案1】:

    我认为您要实现的是甜甜圈缓存,缓存除部分之外的所有页面。我不确定 MVC 是否支持这个(MVC 3 - 否)。有一个可用的开源 DevTrends.MvcDonutCaching 可以帮助您。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-30
      • 2013-11-11
      • 2014-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-22
      相关资源
      最近更新 更多