問題:當緩存一個類的實例並立即將它從緩存中取出時,我得到對象(它不爲空),但是它的所有屬性/字段都是空值或默認值。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