MemoryCache между сессиями - PullRequest
       12

MemoryCache между сессиями

0 голосов
/ 06 февраля 2020

У меня есть веб-приложение, использующее API. net с контроллером Filter, который получает токен и каждый раз выводит пользователя из базы данных. Я пытаюсь устранить тот же вызов базы данных, поэтому я использовал MemoryCache.

 public ObjectCache cache = MemoryCache.Default;

 // setting it, and only calling database again if cache is empty
 cache.Set("cachedUser", userFromDB, policy);

Моя проблема в том, что я открыл другой браузер и вошел в систему как другой пользователь, и я вижу, что первый пользователь все еще кэшируется в отладчик. Причиной этого является область отладчика, или каждый из пользователей в своих сеансах браузера будет иметь свой собственный объект кэша? Я не уверен, что пользователь A останется в кэше локально, а пользователь B останется в кэше локально, или пользователь A останется в кэше, а пользователь B будет ошибочно принят за пользователя A.

1 Ответ

1 голос
/ 06 февраля 2020

Ваш ключ кеша "cachedUser". Поскольку ключ не уникален для каждого пользователя, будет получен один и тот же результат.

После исправления будет кешироваться уникальное поле, такое как UserId. Что-то вроде -

cache.Set(userFromDB.Id, userFromDB, policy);

Это предполагает, что у каждого пользователя есть уникальный Id

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