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サービスとして正常に動作しているようです.enyimとprotobufに最新のnugetパッケージを使用していますが、(トランスコーディングがオフになっていても、純粋なenyim / memcached)いいえ幸運。次に、再度 nuget パッケージを使用して、こちらEnyimMemcached-log4netの指示に従って web.config 経由で log4net をオンにしようとすると、次のエラーが発生します。

ファイルまたはアセンブリ 'log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821' またはその依存関係の 1 つを読み込めませんでした。見つかったアセンブリのマニフェスト定義がアセンブリ参照と一致しません。(HRESULT からの例外: 0x80131040)":"log4net、バージョン = 1.2.10.0、カルチャ = ニュートラル、PublicKeyToken = 1b44e1d426115821

...これは、依存関係自体を処理しているにもかかわらず、間違ったバージョンのlog4netを返すナゲットのようです(プロジェクトリファレンスは1.2.11と言っています)。したがって、なぜenyimが保存/取得に失敗するのかさえわかりません。

これを機能させるための正しい手順は何ですか?

編集:期間への参照をコメントアウトすることにより、機能します(トランスコーディングを含む)。

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

したがって、元の質問を少し変更するには、expiresAt の使用に何か問題がありますか? そして、現在のenyimの化身でlog4netを動作させる簡単な方法はありますか?

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 に答える