如何以编程方式清除控制器操作方法的输出缓存

  • 回答 (2)
  • 关注 (0)
  • 查看 (39)

如果控制器操作具有在操作上指定的OutputCache属性,有什么方法可以清除输出缓存而不必重新启动IIS?

[OutputCache (Duration=3600,VaryByParam="param1;param2")]
public string AjaxHtmlOutputMethod(string param1, string param2)
{
  var someModel = SomeModel.Find( param1, param2 );

  //set up ViewData
  ...

  return RenderToString( "ViewName", someModel );
}

我正在使用HttpResponse.RemoveOutputCacheItem(string path)清除它,但我无法弄清楚路径应该映射到操作方法。我将再次尝试使用由ViewName呈现的aspx页面。

可能我只是手动插入输出RenderToStringHttpContext.Cache

天使的炫翼天使的炫翼提问于
京东售后学生回答于
已采纳

试试这个。

var urlToRemove = Url.Action("AjaxHtmlOutputMethod", "Controller");
HttpResponse.RemoveOutputCacheItem(urlToRemove);

更新:

var requestContext = new System.Web.Routing.RequestContext(
    new HttpContextWrapper(System.Web.HttpContext.Current),
    new System.Web.Routing.RouteData());

var Url = new UrlHelper(requestContext);

更新:

试试这个:

[OutputCache(Location= System.Web.UI.OutputCacheLocation.Server, Duration=3600,VaryByParam="param1;param2")]

否则缓存删除将无法工作,因为你已经在用户的机器上缓存了HTML输出

迷迷学生回答于
filterContext.HttpContext.Response.Cache.SetNoStore()

所属标签

可能回答问题的人

  • 天使的炫翼

    15 粉丝531 提问35 回答
  • 旺仔小小鹿

    社区 · 运营 (已认证)

    48 粉丝0 提问27 回答
  • 富有想象力的人

    2 粉丝0 提问26 回答
  • 发条丶魔灵1

    6 粉丝525 提问25 回答

扫码关注云+社区

领取腾讯云代金券