Возникли проблемы при получении данных из Memcached на .NET MVC.
У меня есть этот репозиторий:
public List<DropDownLocalization> GetLocalization(string key, string lang)
{
var result = cacheClient.Get<IQueryable<DropDownLocalization>>("DD_" + key + "_" + lang);
if (result == null)
{
int getLangId = _db.languages.Where(d => d.Association == lang).Select(d => d.Id).FirstOrDefault();
int getLableItemId = _db.lables_dropdown.Where(d => d.Key == key).Select(d => d.Id).FirstOrDefault();
var get = _db.lables_dropdown_items.Where(d => d.LableId == getLableItemId).Select(d => new DropDownLocalization
{
DDId = d.Id,
DDName = d.lables_dropdown_values.Where(m => m.Language == getLangId).Select(m => m.Value).FirstOrDefault()
}).AsQueryable();
cacheClient.Store(StoreMode.Add, "DD_" + key + "_" + lang, (IQueryable<DropDownLocalization>)get);
EFQueryLogger.WriteQuery(((ObjectQuery)get).ToTraceString());
return get.ToList();
}
return result.ToList();
}
Это список выпадающих меток, локализованных из текущего языка.
Так что он пытается получить данные из кеша, если не удастся поместить данные в кеш. В то время как я комментирую часть кода с помощью оператора «if» (просто чтобы посмотреть, получает ли он данные из кеша), у меня есть ошибка нулевой ссылки. Это означает, что ответ на запрос не находится в кэше.
Может кто-нибудь поставить мой нос к проблеме?
Моя конфигурация клиентской библиотеки enym:
<enyim.com>
<memcached protocol="Text">
<servers>
<add address="localhost" port="11211" />
</servers>
<socketPool deadTimeout="00:00:10" />
</memcached>
</enyim.com>