Невозможно получить простой тест enyim memcached или работающий log4net
Я на самом деле пытаюсь запустить транскодер protobuf-Net, но прежде чем я смогу это сделать, мне нужно запустить настройку enyim/memcached, и при наличии скудной документации у меня возникли проблемы. Вот мой простой тест.net:
using Enyim.Caching;
using Enyim.Caching.Memcached;
....
MemcachedClient Cache = new MemcachedClient();
string key = "somekey";
string objectToCache = "someval";
Cache.Store(StoreMode.Set, key, objectToCache, DateTime.Now.AddMinutes(1000000));
string test = Cache.Get(key) as string; //...it's null though
Мой серверный пакет memcached 1.4.14 (x64) находится здесь и, кажется, работает нормально как служба Windows, и я использую последние пакеты nuget для enyim и protobuf, но (даже с отключенным транскодированием, поэтому чистый enyim/memcached) нет удачи. Затем снова используя пакет nuget EnyimMemcached-log4net
чтобы попытаться включить log4net через мой web.config, как указано здесь, я получаю эту ошибку:
Не удалось загрузить файл или сборку 'log4net, Версия =1.2.10.0, Культура = нейтральная, PublicKeyToken=1b44e1d426115821' или одна из ее зависимостей. Определение манифеста обнаруженной сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040)":"log4net, версия =1.2.10.0, культура = нейтральная, PublicKeyToken = 1b44e1d426115821
... который выглядит как nuget, возвращающий неверную версию log4net (ссылка на проект говорит 1.2.11), хотя он сам обрабатывает зависимости. Так что я даже не понимаю, почему enyim не может хранить / получать.
Каковы правильные шаги, чтобы заставить это работать?
РЕДАКТИРОВАТЬ: закомментировав любую ссылку на длительность, он работает (включая транскодирование).
Cache.Store(StoreMode.Set, key, objectToCache); //, DateTime.Now.AddMinutes(1000000));
Итак, чтобы немного изменить исходный вопрос: есть ли что-то не так с использованием expiresAt? И есть ли простой способ заставить log4net работать в текущем воплощении enyim?
2 ответа
Ответ, кажется, плохой сборки memcached, см. Этот вопрос. Я не могу подтвердить это, потому что couchbase d / l версии 1.4.5 не работает как надлежащая служба Windows (как мой уровень кэширования должен).
Что касается управления версиями log4net / enyim, обновление диспетчера пакетов nuget при запросе через диспетчер расширений VS, похоже, решило его, хотя я никогда не выделял причину.
У меня также была ошибка "Не удалось загрузить файл или сборку" log4net, Version=1.2.10.0".
В моем случае это оказалось; Для пакета 'EnyimMemcached-log4net' NuGet требовалась версия 'log4net' версии 1.2.10.0, хотя она не была специально упомянута в зависимостях. Установка необходимого пакета log4net решила это для меня.
Install-Package log4net -version 1.2.10.0