У меня есть приложение, которое вызывает запросы 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 для динамического вывода по умолчанию при сохранении кэширования для статических файлов?