ASP.net HttpRuntime.Cache使用的默认序列化是什么
只是想知道是否有人明确知道ASP.net HttpRuntime.Cache使用的默认序列化是什么?是二进制,XML,还有别的什么?
我问,因为我的情况是我使用相同自定义类型的多个对象填充通用List.自定义类型是POCO,没有什么特别之处.它的所有属性都是公开的{get;组;它是公共的,它没有继承,它没有接口.事实上,它比我们正在缓存的许多其他对象复杂得多,没有问题.我已经尝试将[Serializable]属性添加到自定义类,它没有任何效果. 我使用唯一键将列表添加到缓存中.在将列表插入缓存之前,已对列表进行了验证,列表中的对象也已经过验证.但是当列表从缓存中拉回时它是一个空列表(NOT NULL),它根本没有任何项目.这意味着列表正被添加到缓存中并且是可检索的,但由于某种原因,缓存在序列化列表中的对象时出现问题. 我发现这怪异怪异,因为我有另一个自定义对象列表,它们更加复杂(包括继承,接口,还包含属性,这些属性是其他复杂对象的通用列表),并且这些列表的缓存可以正常工作. 工作和非工作列表都在使用缓存数据的ASP.net用户控件之外的C#类中进行管理.这两个缓存处理类都调用完全相同的缓存管理器类单例实例,该实例包装HttpRuntime.Cache以提供用于拉动和将对象推入缓存的类型化方法. 任何人都有任何想法会导致这种情况发生.我唯一可以解决的是Document对象的’Blurb’属性可能包含HTML,但如果ASP.net使用二进制序列化缓存,我看不出它会如何做. 这是班级 public class Document { public string ContentTypeId { get; set; } public string ContentId { get; set; } public bool IsCustom { get; set; } public Language DocLanguage { get; set; } public string RegularTitle { get; set; } public string InvertedTitle { get; set; } public string Blurb { get; set; } } 这是语言属性中使用的子类 public class Language { public string Name { get; set; } public string Code { get; set; } } 解决方法
根据Reflector,HttpRuntime.Cache根本不对数据进行序列化,它只是将它存储在Hashtable的内存中.
你说你在自己的单例对象中包含对缓存的调用.你为什么这么做? HttpRuntime.Cache是??一个静态属性,所以你的包装器方法也可以是静态的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 在ASP.NET MVC视图中渲染HTML文件?
- 如何在asp.net Web应用程序(C#)中制作倒数计时器?
- asp.net-mvc – 在控制器中创建操作链接
- asp.net-mvc – HTML.Encode但保留换行符
- asp.net – 向其他人提供一个Web API转发请求的最佳方式
- asp.net-mvc – 追加?param =到mvc路由
- asp.net-mvc – 如何获取路由值在视图(Asp.net Mvc)
- Windbg程序调试系列4-Live Debugging
- asp.net – 无法识别的配置节system.identityModel
- 我如何在ASP.NET MVC中使用Application_Error?