将C#对象保存到磁盘而不进行序列化?

时间:2012-11-19 06:41:24

标签: c# asp.net serialization

我们有一个现有的asp.net 4.0网站,它使用HttpRuntime.Cache做很多事情。它是在我开始处理之前创建的,现在我们遇到了缓存被清除和网站崩溃的问题,因为它总是希望缓存在那里(我知道......他们认为缓存是什么!?)。

所以我需要的是一个永久性的替换缓存,所以我可以将它替换为HttpRuntime.Cache,而不会影响网站。我已经看过序列化,但并不是所有的对象都是可序列化的,并且它们不是一个可以将它们全部序列化的选项(它们中有太多分散在各处)。

有没有办法将任何内存对象/变量/任何内容保存到磁盘,稍后再读取,而不必序列化它?

更新

感谢您的评论和回答。从你的想法开始,我做了一些谷歌搜索,并发现这篇文章演示了(如果你可以下载一个示例解决方案)如何在.Net 4.0中使用自己的自定义缓存提供程序。我还没有能够将它集成到我们的Web应用程序中并进行适当的测试(希望今天晚些时候我能够)但是我想我会把它放在这里看看你是否有任何想法。 ..你觉得怎么样,我应该注意哪些警告?或者这是一个可行的(和非常临时)解决方案?

File-Based Cache for Web and non-Web Apps plus Extend ASP.NET 4.0 OutputCacheProvider

2 个答案:

答案 0 :(得分:5)

您可以使用反射编写自己的“序列化”,获取所有原始字段并将其另存为类路径和值。它将是长操作,但您可以将类保存为文件。更好的解决方案是使用真正的序列化。

答案 1 :(得分:0)

此链接确实有效,所以这将是我的答案。谢谢大家的帮助!

File-Based Cache for Web and non-Web Apps plus Extend ASP.NET 4.0 OutputCacheProvider