如何在Mvc之前通过中间件设置缓存头,而不能被ResponseCacheAttribute覆盖?

时间:2018-11-20 11:08:25

标签: caching asp.net-core asp.net-core-mvc

我有一个ASP.NET Core 2.2(preview3)项目,其中几个控制器用ResponseCacheAttribute装饰,如下所示: [ResponseCache(Location = ResponseCacheLocation.Any, Duration = 60)]

现在,我想添加一个中间件,该中间件应该在MVC之前和缓存之前运行,这可能会确定不允许对此响应进行任何客户端/代理缓存。

但是,如果我在中间件中设置了context.Response.Headers[HeaderNames.CacheControl] = "no-cache, no-store";,它将在稍后的管道中被ResponseCacheAttribute的控制器覆盖。

所以我的管道看起来像这样:

  • 使用新的中间件:检查可访问性,并在特定条件下设置no-store
  • UseResponseCaching
  • UseMvc

如何使它正常工作?

0 个答案:

没有答案