基于此article我正在保存我的jsonresult,就像这样
HttpContext.Session.SetObjectAsJson(multiple, jsonresult);
然后我就像这样检索它
var myComplexObject = HttpContext.Session.GetObjectFromJson<FileUploads>(multiple);
我的问题是,当我检索它时,我得到不同的数据。例如,jsonresult有一个FileUploadsID但myComplexObject有不同的ID。
当我使用
时HttpContext.Session.GetString(multiple);
FileUploadsID是正确的。就在我使用GetObjectFromJson时它是不同的。
我做对了吗?我不确定发生了什么。
答案 0 :(得分:0)
为什么将文件存储在会话状态是不好的做法?
首先,HTTP状态较少。我们希望在ASP.NET MVC中保持这种方式,因此我们尽量不要在ASP.NET MVC中使用Session State,除非我们真的必须这样做。
以会话状态存储数据基本上将它们存储在服务器的内存中。如果我们存储大量数据,服务器最终会抛出OutOfMemory异常,并且app域将重新启动。
此外,如果应用程序因任何原因崩溃,我们将丢失存储在内存中的所有内容。
〜在Web场中,Session存储在分布式系统(如SQL Server或Redis Cache)中,以便跨服务器场同步会话。