DonutOutputCache не очищает кеш при использовании переменной

У меня есть 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 ответ

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

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

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

Другие вопросы по тегам