在asp mvc中保存会话和缓存等数据

时间:2017-06-01 14:02:10

标签: c# asp.net-mvc database session caching

众所周知,我们只需使用

google

Session["kurd"]="";

并将其保存在内存中; 它没有序列化保存数据或任何类似的东西,所以我们可以简单地保存所有内容

但它不是保存数据的可靠方法;

  

所以你们可以说你可以节省数据库或文件,但在我的情况下   它无法完成,因为我的数据不可序列化,我可以   仅保存在缓存会话 viewdata viewbage 中   ,...因为它不需要首先序列化数据;因为   会话中的可靠性,缓存,...我想要的方式可以节省   数据就像缓存和会话一样,......没有序列化数据

任何人都知道我们如何在磁盘中执行此类操作(保存数据) 我的意思是保存硬盘上的数据,就像会话在内存上一样?

更新:

数据类型是图片中包含httpclient,httpclienthandeler,deviceinfo,...的类的实例。

enter image description here

更新:

没人知道多么美妙 如何在硬盘中保存数据就像内存中的会话一样 毫无疑问没有序列化没有bs,只是保存它很容易

2 个答案:

答案 0 :(得分:2)

以编程方式,您可以使用ObjectDumper

或者,如果您正在调试,则可以使用名为Object Exporter

的Visual Studio扩展

答案 1 :(得分:0)

我解决了这个问题 HttpClient不能序列化但是 我发现HttpClient中唯一能保存在这个帖子中的东西 是" CookieContainer" 所以像这样血清化和精神化

var formatter = new SoapFormatter();
string file = "..\cookies.dat"; 
//
using (Stream s = File.Create (file))
    formatter.Serialize(s, cookies);                            
//
CookieContainer retrievedCookies = null;
using (Stream s = File.OpenRead (file))
    retrievedCookies = (CookieContainer) formatter.Deserialize(s);

所以我序列化并保存它然后为了新用途我创建了新的HttpClient并将 CookieContainer 分配给 HttpClent.CookieContainer

此问题适用于 Instasharper