Я пытаюсь использовать OutputCaching на моем веб-сайте ASP.NET MVC. Проблема в том, что когда я пытаюсь изменить значение одного из моих параметров строки запроса, он возвращает данные для первого запрошенного элемента!
Вот мой код (с измененными именами параметров) ...
[ApiAuthorize]
[HandleErrorAsJson]
public class SearchController : Controller
{
[AcceptVerbs(HttpVerbs.Get)]
[OutputCache(Duration = 60, VaryByParam = "*")]
public ActionResult ScoreCard(string foo, byte? bar, byte? pewpew)
{
..
}
}
- ПРИМЕЧАНИЕ 1. ApiAuthorize - пользовательский атрибут, который проверяет параметр строки запроса под названием «Ключ» и проверяет словарь в памяти, чтобы узнать, существует ли он.
- ПРИМЕЧАНИЕ 2. HandleErrorAsJson - настраиваемый атрибут, который возвращает сообщение об ошибке как json, если было / было выдано исключение.
и вот два примера звонков, которые я делаю для этого действия: -
поэтому данные первого вызова (foo = hello world, Pew Pew) возвращаются как 200 OK.
Затем второй вызов API возвращает 200 OK, но с данными из предыдущего вызова.
Кроме того, я не использую прокси-сервер.
Если я закомментирую атрибут OutputCache, все будет хорошо.
Я также попробовал следующее (вручную перечисляя каждый раз, когда мне нужно кешировать) .....
[OutputCache(Duration = 60, VaryByParam = "foo,key,bar,pewpew")]
Не повезло: (
Обратите внимание, как мне нужно убедиться, что я включил параметр API «Ключ» как часть уникального ключа кэша. Я не хочу, чтобы люди искали одну и ту же вещь, но если у второго человека нет правильного ключа, он должен получить не кешированный результат, а сообщение об ошибке (технически это 401 не авторизован, но в любом случае) ...
Мысли