.net 在何处调用HttpResponse.RemoveOutputCacheItem()?

.net 在何处调用HttpResponse.RemoveOutputCacheItem()?,.net,asp.net-mvc,asp.net-mvc-3,caching,outputcache,.net,Asp.net Mvc,Asp.net Mvc 3,Caching,Outputcache,我使用下面的代码进行缓存 public class HomeController : Controller { [OutputCache(Location=OutputCacheLocation.Server, Duration = 1000, VaryByParam = "id")] public ActionResult Index(string id) { ViewBag.Message = "Welcome to ASP.NET MVC!";

我使用下面的代码进行缓存

public class HomeController : Controller
{
    [OutputCache(Location=OutputCacheLocation.Server, Duration = 1000, VaryByParam = "id")]
    public ActionResult Index(string id)
    {
        ViewBag.Message = "Welcome to ASP.NET MVC!";
        return View();
    }

    protected override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        //and trying to invalidate cache in here
        Response.RemoveOutputCacheItem(Request.Url.PathAndQuery);
    }
}

我试图通过重写OnActionExecuting方法使缓存无效,但该方法只是第一次调用。那么,我必须在哪里尝试调用
Response.RemoveOutputCacheItem()
方法来使缓存无效

你想在这里实现什么?您有一个控制器,该控制器具有一个缓存的操作,这意味着该控制器将只被调用一次。您希望何时使此缓存无效?可能在其他控制器操作上?我想在某些条件出现时使该缓存无效,所以在执行方法之前,我会使其无效。但正如您所看到的,OnActionExecution方法从未调用过。现在我明白你的意思了。您认为另一个操作方法将决定使其无效。它实际上可能是,也可能不是。但在某些情况下,我可能只是决定在执行该操作之前使其无效。该操作从未执行,因此您无法在该操作执行之前使缓存无效:-)我想到的解决方案之一是通过另一个操作方法重定向间接使用索引操作?您对此有何看法?是的,您可以执行一些控制器操作,该操作会退出缓存,然后重定向到索引。