Кэш вывода ASP.NET MVC зависит от * и зависит от файла cookie пользователя

У меня есть проект asp.net mvc 3, и у меня есть домашний контроллер . Я пометил свое действие Index с помощью этого атрибута:

[OutputCache(Location = System.Web.UI.OutputCacheLocation.Any, Duration = 120, VaryByParam = "*", VaryByCustom = "user")]
public ActionResult Index()
{
    return View();
}

В Global.asax.cs обрабатывается изменение по индивидуальному заказу с пользователем для проверки значения файла cookie пользователя, чтобы кеширование изменялось в зависимости от того, вошел ли пользователь в систему или нет и что это пользователи.

Когда я перехожу на эту страницу на своем веб-сервере, я получаю следующие заголовки в ответе:

Cache-Control   public, max-age=120
Content-Type    text/html; charset=utf-8
Content-Encoding    gzip
Expires Sun, 20 Mar 2011 21:50:09 GMT
Last-Modified   Sun, 20 Mar 2011 21:48:09 GMT
Vary    Accept-Encoding
Date    Sun, 20 Mar 2011 21:48:09 GMT
Content-Length  3105

Сразу же значение Vary - Accept-Encoding выглядит неверно, не следует ' Если вместо этого он отправил Vary - *?

Я также визуализирую свойство User.Identity.Name в этом представлении и замечаю, что даже после выхода из системы имя пользователя будет отображаться до тех пор, пока не истечет 120 секунд. истекает.

public override string GetVaryByCustomString(HttpContext context, string custom)
{
    if (custom.Equals("user", StringComparison.OrdinalIgnoreCase))
    {
        HttpCookie cookie = context.Request.Cookies["user"];
        if (cookie != null)
        {
            return cookie.Value;
        }
    }
    return base.GetVaryByCustomString(context, custom);
}

Играл с этим несколько часов и полностью застрял, надеюсь, у кого-то есть идея ...

20
задан jjxtra 20 March 2011 в 21:52
поделиться