0

我在我的ASP .NET核心应用程序中有多个控制器,我正在使用像这样的ReponseCache属性几种方法:ASP.Net核心Web API - ResponseCache属性没有添加“缓存控制”标题的响应

//controller 
 
[Route("api/[controller]")] 
 
[EnableCors("CorsPolicy")] 
 
public class InsightsApiController : Controller 
 

 
//method  
 
[Route("CoursesTextContent")] 
 
[HttpGet] 
 
[DecryptFilter] 
 
[ResponseCache(Duration = 60)] 
 
public IActionResult GetCoursesContent(string locale, string tabKey, string widgetType)

,我遇到的问题是,一个控制器,这是工作的罚款,我可以看到在Chrome浏览器开发工具与响应“的Cache-Control:公众最大年龄= 60”,但在不同的控制器中,当我添加此属性时添加“Cache-Control:no-cache”。我比较了它们中的两个控制器和方法,并将它们配置为相同。我也尝试添加ASP.NET Core中间件here,但结果相同。我正在从Angular2网页调用这两种方法。我可以从客户端(请求)做些什么?或在ASP.NET核心应用程序设置中的东西?

回答

0

我在我的ASNETCore的WebAPI项目的startup.cs文件中启用会话中间件。我现在删除了它,并且为所有呼叫/控制器工作。不知道为什么它只会导致一个控制器的问题。

0

你缺少尾随括号

[ResponseCache(Duration = 60] 

必须

[ResponseCache(Duration = 60)] 
+0

对不起,这是一个错误的问题,但我实际上已经在代码中。 – MuazzamAli

+0

不用担心。很奇怪的是,您可能会在不同的控制器中的两种不同的操作方法上使用相同的ResponseCache属性,并获得不同的结果。也许你有一个操作过滤器或中间件来覆盖'Cache-Control'头并将其设置为'no-cache'。 –

+0

本来我并没有使用任何中间件,但是我尝试从我的问题链接中添加它,但也没有帮助。我尝试了所有不同的选项(公共,私人,Vary ...),但结果相同。它很奇怪。 – MuazzamAli