无法获得简单的enyim memcached测试或log4net工作

时间:2012-12-03 01:40:34

标签: c# memcached enyim

我实际上试图让protobuf-net transcoder继续,但在我能够做到这一点之前,我需要让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)是here,似乎可以作为Windows服务正常运行,我正在使用enyim和protobuf的最新nuget软件包,但是(即使关闭了转码,所以纯粹的enyim / memcached)没有运气。然后,再次使用nuget包EnyimMemcached-log4net尝试按照指示here通过我的web.config打开log4net,我收到此错误:

  

无法加载文件或程序集'log4net,Version = 1.2.10.0,   Culture = neutral,PublicKeyToken = 1b44e1d426115821'或其中一个   依赖。定位程序集的清单定义没有   匹配程序集引用。 (HRESULT的例外情况:   0x80131040)“:”log4net,Version = 1.2.10.0,Culture = neutral,   公钥= 1b44e1d426115821

...似乎是nuget返回错误的log4net版本(项目参考说明1.2.11),即使它正在处理依赖项本身。所以我甚至不明白为什么enyim无法存储/获取。

使这项工作正确的步骤是什么?

编辑:通过注释掉对持续时间的任何引用,它都有效(包括转码)。

Cache.Store(StoreMode.Set, key, objectToCache); //, DateTime.Now.AddMinutes(1000000));

所以,稍微修改一下原来的问题:使用expiresAt有什么问题吗?是否有一种简单的方法可以让log4net在当前的enyim化身中运行?

2 个答案:

答案 0 :(得分:1)

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

就log4net / enyim版本而言,在通过VS扩展管理器提示时更新nuget包管理器似乎已经解决了它,尽管我从未查明原因。

答案 1 :(得分:0)

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

在我的情况下,事实证明了; 'enyimMemcached-log4net'NuGet包需要1.2.10.0版本的'log4net',即使它没有在依赖项中特别提到。安装所需的log4net包解决了它。

  @ParseClassName("Question")
public class Question extends ParseObject {
public static final String TAG = Question.class.getName();

private String question;
private String rightAnswer;
private String wrongAnswer1;
private String wrongAnswer2;
private String wrongAnswer3;

public Question(){
    //need for Parse
}

public Question(String question, String rightAnswer, String wrongAnswer1, String wrongAnswer2, String wrongAnswer3) {
    super();
    this.question = question;
    this.rightAnswer = rightAnswer;
    this.wrongAnswer1 = wrongAnswer1;
    this.wrongAnswer2 = wrongAnswer2;
    this.wrongAnswer3 = wrongAnswer3;
}

public Question(String theClassName, String question, String rightAnswer, String wrongAnswer1, String wrongAnswer2, String wrongAnswer3) {
    super(theClassName);
    this.question = question;
    this.rightAnswer = rightAnswer;
    this.wrongAnswer1 = wrongAnswer1;
    this.wrongAnswer2 = wrongAnswer2;
    this.wrongAnswer3 = wrongAnswer3;
}