c# - 当我在输出缓存中使用它或缓存错误时,VaryByCustom 是否不起作用?

标签 c# asp.net-mvc caching outputcache

我花了一整天的时间来找出问题,但我不能: 这是问题所在: 在我有输出缓存属性的操作上:

[OutputCache(Duration = 600, VaryByParam = "*", VaryByCustom = "User")]

我还像这样重写了 Global.asax:

public override string GetVaryByCustomString(HttpContext context, string arg)
{
    if (arg == "User")
    {
        return "User=" + context.User.Identity.Name;
    }

    return base.GetVaryByCustomString(context, arg);
}

但是当我第一次登录时它会缓存这些值,然后当我尝试注销并以不同的用户身份再次登录时我会看到之前的缓存值。在调试时我检查了 Identity.Name 为第一个用户返回正确的结果它是“admin”对于第二个用户它是“kate”

最佳答案

我找到了答案。我不得不输入:Location = OutputCacheLocation.Server,在另一种情况下它缓存在错误的客户端。

所以 outputcache 属性应该是这样的:

[OutputCache(Duration = 600, VaryByParam = "*", VaryByCustom = "User", Location = OutputCacheLocation.Server)]
public ActionResult Index(<my parameters>)

关于c# - 当我在输出缓存中使用它或缓存错误时,VaryByCustom 是否不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18588768/

相关文章:

javascript - 选项卡控件在 ASP.net MVC 中未按预期工作

java - View 太大,无法放入绘图缓存

c# - 尝试了对象反序列化和 LINQ 后,无法解析 XML 对象和子对象

c# - XAML 自定义文本框光标停留在输入开始处

c# - 将多个文本框值绑定(bind)到单个属性

c# - 在失去焦点时更新数据绑定(bind)

c# - 为 "just one more request..."保留 TempData

javascript - 如何将mvc View javascript代码传输到单独的js文件

javascript - jQuery 收集数组中的元素属性?

JavaScript 无法在本地主机上运行