基于这篇文章,我像这样保存我的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 缓存(中,以在整个场中同步会话。