2017-08-11 74 views
0

在此基礎上article我正在救了我的jsonresult這樣保存JsonResult到HttpContext.Session

HttpContext.Session.SetObjectAsJson(multiple, jsonresult); 

那麼我檢索它像這樣

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

我的問題是,我得到不同的數據當我檢索它。例如jsonresult具有FileUploadsID,但myComplexObject具有不同的ID。

當我使用

HttpContext.Session.GetString(multiple); 

的FileUploadsID是正確的。就在我使用GetObjectFromJson時,它是不同的。

我做對了嗎?我不確定發生了什麼事。

+0

您不應該在會話狀態中保存文件;這不是一個好習慣。你希望達到什麼目的? – Win

+0

我需要再次重用j​​asonresult,以便我可以將數據發送到數據庫,教會這將是一個好方法 – user8392603

+0

不,它不是。您要麼存儲在文件系統中,要麼存儲數據庫中最糟糕的情況。 – Win

回答

0

爲什麼在會話狀態下存儲文件是不好的做法?

首先,HTTP狀態較少。我們喜歡在ASP.NET MVC中保持這種狀態,所以我們儘量不要在ASP.NET MVC中儘可能使用會話狀態,除非我們真的必須這樣做。

將數據存儲在會話狀態基本上是將它們存儲在服務器的內存中〜如果我們存儲大量數據,服務器最終會拋出OutOfMemory異常,並且應用程序域將重新啓動。

此外,如果應用程序因任何原因崩潰,我們將失去存儲在內存中的所有內容。

〜在Web場中,會話存儲在分佈式系統(如SQL Server或Redis緩存)中,以便跨場同步會話。