DonutOutputCache не очищает кеш при использовании переменной - PullRequest
3 голосов
/ 26 января 2012

У меня есть ActionResult, который я хочу, чтобы он кэшировался на основе идентификатора

[DonutOutputCache(Duration = 3600, VaryByParam = "product_Id")]
public ActionResult ProductInfo(Guid product_Id)
{
    System.Threading.Thread.Sleep(3000);
    return PartialView(_repository.GetProductInfo(product_Id));
}

Это работает хорошо.

Когда я хочу удалить кеш, я использую этот синтаксис

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult SaveDetails(DetailsModel model)
{
    try
    {
        // save action here, then remove cache

        var cacheManager = new OutputCacheManager();
        cacheManager.RemoveItem("Common", "ProductInfo", new { product_Id = model.Product_Id });

        return Json(new { hasError = false }, JsonRequestBehavior.AllowGet);
    }
    catch (Exception ex)
    {
        return Json(new { hasError = true, message = ex.Message }, JsonRequestBehavior.AllowGet);
    }
}

OutputCacheManager (). RemoveItem не работает, когда я указываю параметр.

Работает, если я просто использую

cacheManager.RemoveItem("Common", "ProductInfo");

Что я делаю неправильно

1 Ответ

3 голосов
/ 28 января 2012

Я нашел решение

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

Измените product_Id на product_id, и он будет работать.

...