#c# #asp.net-core-mvc
#c# #asp.net-core-mvc
Вопрос:
У меня есть приложение, которое вызывает запросы 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-версию при переходе по истории назад / вперед.
Быстрое исправление для предотвращения кэширования (протестировано, raw больше нет):
[ResponseCache(NoStore = true, Location = ResponseCacheLocation.None)]
public class HomeController { ...
Но я не хочу определять этот атрибут вручную на всех контроллерах. Как установить это правило в ConfigureServices для динамического вывода по умолчанию, сохраняя кэширование для статических файлов?
Комментарии:
1. afaik, вы можете установить cache: false в запросе ajax, чтобы отключить суперкеширование (не уверен, решает ли это вашу проблему, хотя)