MemoryCache.Default становится недействительным после первого запроса

У меня самая странная проблема - только начал использовать MemoryCache и думал, что это будет довольно просто... оказывается, это не так. Это совершенно пустое приложение ASP.NET MVC5, размещенное на моем локальном IIS 7.5.

При первом запросе значение должно было быть добавлено в кеш, поэтому, если я обновлю страницу, кеш должен сохранить значение.

Когда я отлаживаю приложение, точка останова (в моей строке с комментариями) срабатывает дважды: по первому запросу, по второму запросу. После этого кешированное значение можно использовать.

Почему кеш не возвращает значение при первой перезагрузке, как ожидалось?

public class Temp
{
    public int Age { get; set; }
}

public class HomeController : Controller
{
    public ActionResult Index()
    {
        var temp = (Temp)MemoryCache.Default.Get("MyVal");

        if (temp == null)
        {
            // THIS GETS HIT ON THE FIRST TWO REQUESTS, AFTER THAT THE CACHE RETURNS THE VALUE
            temp = new Temp { Age = -127 };
            MemoryCache.Default.Add("MyVal", temp, DateTime.UtcNow.AddMinutes(10));
        }


        return View();
    }
}

person Wolfgang    schedule 26.06.2015    source источник


Ответы (1)


Я не думаю, что вам нужно использовать MemoryCache в приложении MVC. Чтобы заставить его работать, требуется немного пользовательской реализации. Почему бы вместо этого не использовать HttpContext.Cache? Он чрезвычайно прост в использовании и может быть настроен по вашему вкусу — в Интернете есть множество руководств. (Некоторое время назад я сделал небольшое руководство, вы можете проверить это если у вас возникли проблемы с запуском)

person stann1    schedule 26.06.2015