2012-06-28 4 views
1

Я просто читаю около OutputCache, и я вижу, как вы можете применить VaryByParam, чтобы изменить кеш на основе параметров, отправленных в представление, но я хотел бы изменить кеш на основе как параметров, так и текущего пользователя (используя членство по умолчанию Asp.Nets). Я смотрю вокруг, но, похоже, я не могу найти способ заставить это работать.OutputCache by Membership?

Любые предложения о том, что я должен попробовать?

ответ

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

в 4 MVC я считаю, что свойство пользователя отрывается от контекста, а не просьба. – Steve