4

我实际上是在尝试让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尝试按照此处的说明通过我的 web.config 打开 log4net ,我收到此错误:

无法加载文件或程序集 'log4net,Version=1.2.10.0,Culture=neutral,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 化身中工作?

4

2 回答 2

1

答案似乎是 memcached 的错误构建,请参阅此问题。我无法确认,因为 1.4.5 的 couchbase d/l 不能作为正确的 Windows 服务运行(因为我的缓存层必须如此)。

至于 log4net/enyim 版本控制,当通过 VS 扩展管理器提示时更新 nuget 包管理器似乎已经解决了它,尽管我从未隔离过原因。

于 2013-01-03T19:39:43.343 回答
0

我也有“无法加载文件或程序集'log4net,版本 = 1.2.10.0”错误。

就我而言,结果是;'EnyimMemcached-log4net' NuGet 包需要 'log4net' 的 1.2.10.0 版本,即使它没有在依赖项中特别提及。安装所需的 log4net 包为我解决了这个问题。

Install-Package log4net -version 1.2.10.0
于 2015-07-08T11:07:35.557 回答