Я понимаю, что элементы в MemoryCache не удаляются по истечении срока их действия. Я кэширую некоторый X509Certificate2, который, согласно документации, должен быть удален после завершения.
Однако мой наивный подход приведет к удалению объекта, когда объект все еще может использоваться некоторыми потоки (см. код ниже).
Как правильно обработать этот случай? Я думаю, мне может понадобиться счетчик ссылок или что-то подобное?
await cache.GetOrCreateAsync("IdTokenCerts", async entry =>
{
entry.AbsoluteExpirationRelativeToNow = JwtCertsCacheLifetime;
entry.RegisterPostEvictionCallback((_, value, _, _) =>
{
if (value is IEnumerable keys)
{
foreach (var key in keys)
{
if (key is X509SecurityKey x509Key)
{
x509Key.Certificate.Dispose();
}
}
}
});
// ...
}
Подробнее здесь: https://stackoverflow.com/questions/790 ... -be-in-use
Как правильно удалить объекты с истекшим сроком действия в MemoryCache (возможно, они все еще используются)? ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Когда std::weak_ptr пуст? Является ли std::weak_ptr с истекшим сроком действия пустым?
Anonymous » » в форуме C++ - 0 Ответы
- 33 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Ядро Asp.net продолжает использовать сертификат с истекшим сроком действия
Anonymous » » в форуме C# - 0 Ответы
- 30 Просмотры
-
Последнее сообщение Anonymous
-