ICSharpCode.SharpZipLib未能加载文件或程序集

Memcached使用的是0.84版本的dll,vs2013带的是0.86版本

在web.config中<runtime><assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">节加入以下节点

      <dependentAssembly>
<assemblyIdentity name="ICSharpCode.SharpZipLib" publicKeyToken="1B03E6ACF1164F73" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-0.86.0.518" newVersion="0.86.0.518" />
</dependentAssembly>

未标记为可序列化。

为所有要缓存的对象加可序列化属性太麻烦,需要对进行再次封装

        /// <summary>
/// 向缓存服务器写入数据
/// </summary>
/// <param name="key">key</param>
/// <param name="value">数据</param>
/// <param name="seconds">缓存时间 </param>
/// <returns></returns>
public static bool SetData(string key, object value, int seconds)
{
string jsonString = JsonConvert.SerializeObject(value);
return MemcacheHelper.Set(key, jsonString, DateTime.Now.AddSeconds(seconds));
} /// <summary>
/// 从服务器读取数据
/// </summary>
/// <typeparam name="T">类型</typeparam>
/// <param name="key">key</param>
/// <returns></returns>
public static T GetData<T>(string key)
{
object obj = MemcacheHelper.Get(key);
if (obj == null)
return default(T);
return JsonConvert.DeserializeObject<T>(obj.ToString());
}

使用上面的方法可能会导致复杂的集合类无法反序列化成功,报Newtonsoft.Json.JsonSerializationException: Cannot deserialize the current JSON array (e.g. [1,2,3]) into type .....错误

尝试将写入方法改为

        /// <summary>
/// 向缓存服务器写入数据
/// </summary>
/// <param name="key">key</param>
/// <param name="value">数据</param>
/// <param name="seconds">缓存时间 </param>
/// <returns></returns>
public static bool SetData<T>(string key, T value, int seconds)
{
if (value == null)
return false;
string jsonString = JsonConvert.SerializeObject(value);
return MemcacheHelper.Set(key, jsonString, DateTime.Now.AddSeconds(seconds));
}

反序列化失败是偶尔出现,以待后测

Memcached 使用备注的更多相关文章

  1. memcached安装【转】

    1.安装依赖软件 # yum -y install libevent libevent-devel perl-Test-Harness perl-Time-HiRes perl-TermReadKey ...

  2. Memcached 测试

    Memcached set 命令用于将 value(数据值) 存储在指定的 key(键) 中. 如果set的key已经存在,该命令可以更新该key所对应的原来的数据,也就是实现更新的作用. 语法: s ...

  3. 安装repcached,并且测试其双向复制是否成功

    备注:本实验不仅包括了repcached,还包括了memcache的配置安装 1.1实验环境. 1.2环境准备. 1.3配置一个memcache. 1.3.1安装memcache. 1.3.2启动me ...

  4. Memcached初探

    一.Memcached是什么 Memcached是由Danga Interactive开发的,高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度. Memcached基于 ...

  5. 转载:Centos7 从零编译配置Memcached

    序言 Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度. Memca ...

  6. [原创]Centos7 从零编译配置Memcached

    序言 Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度. Memca ...

  7. python对缓存(memcached,redis)的操作

    1.Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的 ...

  8. Memcached分布式缓存初体验

    1 Memcached简介/下载/安装 Memcached是一个高性能的不是内存对象缓存系统,用于动态Web应用以减轻数据库负载.Memcached基于一个存储键/值对的HashMap.其客户端可以使 ...

  9. 高性能文件缓存key-value存储—Memcached

    1.高性能文件缓存key-value存储—Redis 2.ASP.NET HttpRuntime.Cache缓存类使用总结 备注:三篇博文结合阅读,简单理解并且使用,如果想深入学习,请多参考文章中给出 ...

随机推荐

  1. 如何使用require.js?

    最近几天在学习一个javascript库require.js,也看了一些相关的教学视频,这里推荐一下幕课网阿当老师的<阿当大话西游之Web组件>的教学视频,一整套看下来,参照视频里面的de ...

  2. SpringBoot使用CORS解决跨域请求问题

    什么是跨域? 同源策略是浏览器的一个安全功能,不同源的客户端脚本在没有明确授权的情况下,不能读写对方资源. 同源策略是浏览器安全的基石. 如果一个请求地址里面的协议.域名和端口号都相同,就属于同源. ...

  3. 笨办法30Else 和 If

    people = 30 cars = 40 trucks = 30 if cars < people: print "We should take the cars." el ...

  4. docker命令脚本

    第一版: 1 #!/bin/bash #this is input docker continer shell! #this is -- # v1.1.2 read -p "请输入要执行do ...

  5. obspy下载地震波数据

    Retrieving Data from Data Centers(从数据中心检索数据) PS:此部分提供了使用obspy下载数据的推荐方式,但是由于数据中心和web服务在不断更新变化,所有有些建议可 ...

  6. eclipse中创建DataBase Connections

    1.window --> show view --> other --> Data Management --> Data Exploerer --> ok: 2.右键单 ...

  7. BOM浏览器

    1.window.open(url,ways) url是打开的网页地址 ways 是打开的方式 2.window.close() 3.window.navigator  浏览器用户信息 4.windo ...

  8. [转]腾讯研发类笔试面试试题(C++方向)

     https://blog.csdn.net/Xiongchao99/article/details/73381280 1.C和C++的特点与区别? 答:(1)C语言特点:1.作为一种面向过程的结构化 ...

  9. 怎么解决mysql 执行SQL过长问题------------?

    Could not execute JDBC batch update mysql中,in语句中参数个数是不限制的.不过对整段sql语句的长度有了限制(max_allowed_packet). 默认 ...

  10. css颜色属性及设置颜色的地方

    css颜色属性 在css中用color属性规定文本的颜色. 默认值是not specified 有继承性,在javascript中语法是object.style.color="#FF0000 ...