在 .NET MVC 解决方案上从 Memcached 获取数据时出现问题。
我有这个自定义存储库:
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>