将 JsonResult 保存到 HttpContext.Session



基于这篇文章,我像这样保存我的jsonresult

HttpContext.Session.SetObjectAsJson(multiple, jsonresult);

然后我像这样检索它

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

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

当我使用

HttpContext.Session.GetString(multiple);

文件上传 ID 是正确的。只是当我使用GetObjectFromJson时,它就不同了。

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

为什么将

文件存储在会话状态中是一种不好的做法?

首先,HTTP是无状态的。我们希望在 MVC ASP.NET 保持这种方式,因此除非我们真的有必要,否则我们尽量不要在 MVC 中使用会话状态 ASP.NET。

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

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

~在 Web 场中,会话存储在分布式系统(如 SQL Server 或 Redis 缓存(中,以在整个场中同步会话。

最新更新