0

我有一個名爲「列表」的控制器/操作。此方法具有內置的與屬性MVC 4 OutputCache導致錯誤時使用WebSecurity.IsAuthenticated

[的OutputCache(持續時間= 3600,的VaryByParam = 「*」)]

此操作具有3600秒緩存,因爲從數據庫負載數據,並將它是每更換1小時(更多/更少)。

它在Layout.cshtml,因爲我的主人佈局(其我的主人頁),顯示在頭部,如果身份驗證的用戶頂部欄中用戶名或顯示靜態文本用戶當用戶沒有通過驗證的問題。請參見下面的代碼:

@ Html.Raw(WebSecurity.IsAuthenticated WebSecurity.CurrentUserName:「用戶」)

當有人通過認證頁面上的第一次訪問的名稱緩存完成,那麼所有用戶,通過身份驗證或未通過身份驗證的用戶,都會在標題頂部欄上看到第一個通過身份驗證的用戶的用戶名。這真是太糟了!

我以爲不會做layout.cshtml緩存,只有來自Controller/Action指定的數據。

我該如何解決?

我不想刪除OutputCache,因爲它對我非常重要。標題頂部欄對所有用戶來說都很常見,因爲它內置在佈局頁面中。

回答

1

我認爲你想達到的是甜甜圈緩存,緩存除了一節以外的所有頁面。我不確定MVC是否支持這個(MVC 3 - no)。有一個開源的DevTrends.MvcDonutCaching可以幫助你。