Базовый веб-API ASP.Net - атрибут ResponseCache не добавляет заголовок "Cache-Control" в ответ
У меня есть несколько контроллеров в моем приложении ASP .NET Core, и я использую атрибут ReponseCache следующим образом:
//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 dev с "Cache-Control:public max-age=60", но в другом контроллере, когда я добавляю этот атрибут, его добавление "Cache-Control: нет кэша". Я сравнил оба контроллера и методы в них, и они настроены одинаково. Я также попытался добавить промежуточное программное обеспечение ASP .NET Core, рекомендованное здесь, но результаты те же. Я вызываю оба метода с веб-страницы Angular2. Что я могу сделать со стороны клиента (запрос)? или что-то в настройках приложения ASP .NET Core?
2 ответа
У меня было включено промежуточное программное обеспечение сеанса в файле startup.cs моего проекта ASNETCore webapi. Я удалил его, и теперь он работает для всех вызовов / контроллеров. Не уверен, почему это вызывает проблемы только с одним контроллером.
Вам не хватает завершающих скобок
[ResponseCache(Duration = 60]
должно быть
[ResponseCache(Duration = 60)]