Как отключить кэширование ответов для всех контроллеров в ASP.NET Core MVC, но сохранить для статических файлов? - PullRequest
1 голос
/ 13 марта 2019

У меня есть приложение, которое вызывает запросы html / json по одному и тому же URL-адресу, измените его на Accept заголовок запроса.

public IActionResult Index()
{
    return View();
}

[ActionName(nameof(Index))]
[AcceptHeader(MediaTypeNames.Application.Json)]
public async Task<IActionResult> IndexJson()
{
    // ...some kind of magic here.

    return Json(model);
}

Это работает, но когда app.UseResponseCaching() не определено в Startup.cs и не выполнен ajax-запрос (в ответе нет заголовка Content-Control), браузер запоминает последний ответ json с заданным URL-адресом и показывает его необработанным на белом экране вместо создание нового запроса на html-версию при навигации по истории назад / вперед.

Быстрое исправление для предотвращения кэширования (проверено, больше не используется):

[ResponseCache(NoStore = true, Location = ResponseCacheLocation.None)]
public class HomeController { ...

Но я не хочу определять этот атрибут вручную на всех контроллерах. Как установить это правило в ConfigureServices для динамического вывода по умолчанию при сохранении кэширования для статических файлов?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...