2012-06-28 104 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