将JsonResult保存到HttpContext.Session

时间:2017-08-11 09:40:37

标签: json session asp.net-core-mvc

基于此article我正在保存我的jsonresult,就像这样

HttpContext.Session.SetObjectAsJson(multiple, jsonresult);

然后我就像这样检索它

var myComplexObject = HttpContext.Session.GetObjectFromJson<FileUploads>(multiple);

我的问题是,当我检索它时,我得到不同的数据。例如,jsonresult有一个FileUploadsID但myComplexObject有不同的ID。

当我使用

HttpContext.Session.GetString(multiple);

FileUploadsID是正确的。就在我使用GetObjectFromJson时它是不同的。

我做对了吗?我不确定发生了什么。

1 个答案:

答案 0 :(得分:0)

  

为什么将文件存储在会话状态是不好的做法?

首先,HTTP状态较少。我们希望在ASP.NET MVC中保持这种方式,因此我们尽量不要在ASP.NET MVC中使用Session State,除非我们真的必须这样做。

以会话状态存储数据基本上将它们存储在服务器的内存中。如果我们存储大量数据,服务器最终会抛出OutOfMemory异常,并且app域将重新启动。

此外,如果应用程序因任何原因崩溃,我们将丢失存储在内存中的所有内容。

〜在Web场中,Session存储在分布式系统(如SQL Server或Redis Cache)中,以便跨服务器场同步会话。