Кэширование ответов с использованием VaryByQueryKeys с аргументом строки запроса словаря

В моем приложении ASP.NET Core MVC есть метод контроллера с аргументом словаря, передаваемым через строку запроса запроса:

public async Task<IActionResult> Get([FromQuery] Dictionary<string, string> filterCriteria)
{
}

Приложение использует кэширование ответов с параметром VaryByQueryKeys для возврата кэшированных ответов на запросы, которые ранее были обслужены. Это работает как требуется для простых значений строки запроса, используя атрибут метода со следующим синтаксисом: [ResponseCache(VaryByQueryKeys = new[] { "argName" }, Duration = 20)]

Однако я хочу использовать его с аргументом словаря, показанным выше.

Можно ли использовать его с объектным аргументом, таким как словарь? Какой синтаксис следует использовать при указании списка ключей строки запроса в атрибуте ResponseCache?


person Paul Taylor    schedule 02.03.2020    source источник


Ответы (1)


Оказывается, вы можете указать queryKeys для аргумента словаря, используя следующий синтаксис:

[ResponseCache(VaryByQueryKeys = new[] { "argName[key1]", "argName[key2]", ... }, Duration = 20)]
person Paul Taylor    schedule 02.03.2020