Я наконец нашел причину ошибки.Я выбрасывал контейнер, в котором находился контролируемый контейнером экземпляр Cache.Когда контейнер утилизировал, он также уничтожал мой кеш.И не удалось установить значения для удаленного объекта кэша.Это должно было вызвать исключение, но этого не произошло, отсюда и вся путаница.Будущие читатели, пожалуйста, имейте в виду.
var CachingPolicy = new CacheItemPolicy();
var Cache = new MemoryCache("YourCacheName");
container.RegisterInstance(CachingPolicy);
container.RegisterInstance(Cache);
container.Dispose(); //disposes cache as well. But calling methods on cache object won't throw exception.
//at this point, you should create the cache again, like
CachingPolicy = new CacheItemPolicy();
Cache = new MemoryCache("YourCacheName");
container.RegisterInstance(CachingPolicy);
container.RegisterInstance(Cache);
Дальнейшее копание в MemoryCache
коде через ILSpy очистило это, он ничего не установит, если объект будет удален.
if (IsDisposed)
{
if (collection != null)
{
foreach (ChangeMonitor item in collection)
{
item?.Dispose();
}
}
}
else
{
MemoryCacheKey memoryCacheKey = new MemoryCacheKey(key);
MemoryCacheStore store = GetStore(memoryCacheKey);
store.Set(memoryCacheKey, new MemoryCacheEntry(key, value, absExp, slidingExp, priority, collection, removedCallback, this));
}