问题:当缓存一个类的实例并立即将它从缓存中取出时,我得到对象(它不为空),但是它的所有属性/字段都是空值或默认值。AppFabric缓存 - 对象的序列化和反序列化要求是什么?
_cacheHelper.PutInCache("testModuleControlInfoOne", mci);
//mci has populated fields
var mciFromCacheOne = _cacheHelper.GetFromCache("testModuleControlInfoOne");
//mciFromCacheOne now has null or default fields
所以我怀疑对象被结构化的方式是问题,AppFabric的不正确序列化对象的某些原因。
但是,当我使用下面的序列化方法时,我得到的对象与所有属性/字段相同,因为它们在序列化之前。
public T SerializeThenDeserialize<T>(T o) where T : class
{
BinaryFormatter bf = new BinaryFormatter();
using (MemoryStream ms = new MemoryStream())
{
bf.Serialize(ms, o);
ms.Position = 0;
return (T)bf.Deserialize(ms);
}
}
如何可以将对象序列化和反序列化正确使用二进制格式,并通过缓存不会做同样的事情?
有没有人遇到过这个问题,或没有人有任何建议或提示一般要注意什么?
回答此处发布的类似的问题: http://stackoverflow.com/questions/3756480/appfabric-caching-can-i-specify-serialization- style-used-for-all-objects/8195002#8195002 – kenster 2011-11-19 15:29:34