Я получаю это сообщение:
System.ObjectDisposedException: Невозможно получить доступ к удаленному объекту.Распространенной причиной этой ошибки является удаление контекста, который был разрешен путем внедрения зависимости, а затем попытка использовать тот же экземпляр контекста в другом месте вашего приложения.Это может произойти, если вы вызываете Dispose () для контекста или заключаете контекст в оператор using.Если вы используете внедрение зависимостей, вы должны позволить контейнеру внедрения зависимостей избавиться от экземпляров контекста.
Контроллер:
[HttpGet]
public IActionResult GetAllTags()
{
try
{
return Ok(GetAll());
}
catch(Exception ex)
{
return ControllerHelper.LogAndReturnBadRequest(_logger, ex);
}
}
private IEnumerable<TagDto> GetAll()
{
IEnumerable<TagDto> tags;
if (!_cache.TryGetValue(CacheKeys.States, out tags))
{
tags = _service.GetAll()?.Select(t => _mapper.Map<TagDto>(t));
if(tags != null)
_cache.Set(CacheKeys.States, tags);
}
return tags;
}
Startup.cs
services.AddMemoryCache();
Я построчно отлаживал код, но даже после последней строки моего кода ошибки вообще не было.
Ошибка, которую я увидел, была в консоли Kestrel. Стоит отметить, что ошибка возникает только при извлечении тегов из _cache, не происходит в первый раз, когда теги извлекаются непосредственно из базы данных.
Вот что я получил из запроса Почтальона:
Много похожих вопросов, касающихся распоряжения объектами, но здесь вы можете видеть, что яне использовать dispose () или использование () в моем коде.