3

从 protobuf-net 到 enyim 缓存的转码器是否已弃用?使用 protobuff-net 进行分布式缓存

当我尝试启动 MemcachedClient() 时,像这个app.config一样设置我的 Enyim 配置会导致错误

转码器类型="ProtoBuf.Caching.Enyim.NetTranscoder"/

System.TypeInitializationException was unhandled by user code
HResult=-2146233036
Message=The type initializer for 'Enyim.Caching.MemcachedClient' threw an exception.
Source=Enyim.Caching
TypeName=Enyim.Caching.MemcachedClient
StackTrace:
   at Enyim.Caching.MemcachedClient..ctor()
   at Global.asax.cs:line 31
InnerException: System.Configuration.ConfigurationErrorsException
   HResult=-2146232062
   Message=The value of the property 'transcoder' cannot be parsed. The error is: Object reference   not set to an instance of an object. (\web.config line 207)
   Source=System.Configuration
   BareMessage=The value of the property 'transcoder' cannot be parsed. The error is: Object reference not set to an instance of an object.
   StackTrace:
        at System.Configuration.BaseConfigurationRecord.EvaluateOne(String[] keys, SectionInput input, Boolean isTrusted, FactoryRecord factoryRecord, SectionRecord sectionRecord, Object parentResult)
        at System.Configuration.BaseConfigurationRecord.Evaluate(FactoryRecord factoryRecord, SectionRecord sectionRecord, Object parentResult, Boolean getLkg, Boolean getRuntimeObject, Object& result, Object& resultRuntimeObject)
        at System.Configuration.BaseConfigurationRecord.GetSectionRecursive(String configKey, Boolean getLkg, Boolean checkPermission, Boolean getRuntimeObject, Boolean requestIsHere, Object& result, Object& resultRuntimeObject)
        at System.Configuration.BaseConfigurationRecord.GetSection(String configKey)
        at System.Web.HttpContext.GetSection(String sectionName)
        at System.Web.Configuration.HttpConfigurationSystem.GetSection(String sectionName)
        at System.Web.Configuration.HttpConfigurationSystem.System.Configuration.Internal.IInternalConfigSystem.GetSection(String configKey)
        at System.Configuration.ConfigurationManager.GetSection(String sectionName)
        at Enyim.Caching.MemcachedClient..cctor() in MemcachedClient.cs:line 25
   InnerException: 

两者都通过 nuget 安装并使用可用的最新版本。

4

1 回答 1

3

是的(咳嗽),当然有!只看“protobuf-net.Enyim”,即

PM> Install-Package protobuf-net.Enyim

(或使用 GUI 客户端)

要初始化,您需要将转码器配置为ProtoBuf.Caching.Enyim.NetTranscoder(按照原始说明)的一个实例。如果您通过配置执行此操作,请注意此类型的程序集现在是protobuf-net.Enyim. 如果我假设配置文件使用标准符号,那么这意味着您需要指定(在配置中):

<transcoder type="ProtoBuf.Caching.Enyim.NetTranscoder,protobuf-net.Enyim" />

原答案:

enyim 转码器当前不在 nuget 中;但是 - 我现在将通过添加一个单独的 NuGet 包(参考 EnyimMemcached 和 protobuf-net)来恢复它,将其重新添加回来。

随机问题...您是否有机会将我指向二进制 memcached 下载进行测试?

这已经滞后的一个原因是,当我第一次编写 enyim 转码器时,memcached 是一个简单的“运行这个” - 但上次我看起来它已经全部“企业”了,我无法找到一个刚刚拥有的简单包memcached 服务器。如果你能告诉我它现在在哪里我会在这个周末让它工作。

于 2012-11-30T14:19:49.190 回答