2012-06-28 43 views
1

我刚刚阅读了大约OutputCache,并且我看到如何根据发送给视图的参数来应用VaryByParam来更改缓存,但是我想根据参数和当前登录的用户更改缓存(使用Asp.Nets默认成员资格)。我一直在环顾四周,但我似乎无法找到一种方法来实现这一目标。按会员输出缓存?

对我应该尝试的建议有什么建议吗?

回答

4

使用VaryByCustom。我实现了这样的事情:

[OutputCache(VaryByCustom="user")] 
public ActionResult SomeAction() 
{ 
    return View(); 
} 

在Global.asax.cs中

public override string GetVaryByCustomString(HttpContext context, string arg) 
{ 
    if (arg == "user") 
    { 
     return context.Request.User.Identity.IsAuthenticated ? context.Request.User.Identity.Name : string.Empty; 
    } 

    return base.GetVaryByCustomString(context, arg); 
} 
+0

在MVC 4,我相信用户属性脱落背景下,而不是请求。 – Steve