/ / Saving JsonResult do HttpContext.Session - json, session, asp.net-core-mvc

Zapisywanie JsonResult w HttpContext.Session - json, sesja, asp.net-core-mvc

Oparte na tym artykuł tak oszczędzam mój jsonresult

HttpContext.Session.SetObjectAsJson(multiple, jsonresult);

następnie odzyskuję to w ten sposób

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

moim problemem jest to, że otrzymuję różne dane, gdy je odzyskuję. na przykład jsonresult ma FileUploadsID, ale myComplexObject ma inny identyfikator.

kiedy używam

HttpContext.Session.GetString(multiple);

FileUploadsID jest poprawny. Właśnie wtedy, gdy korzystam z GetObjectFromJson, jest inaczej.

Czy zrobiłem to dobrze? Nie jestem pewien, co się dzieje.

Odpowiedzi:

0 dla odpowiedzi № 1

Dlaczego przechowywanie plików w stanie sesji jest złą praktyką?

Przede wszystkim HTTP ma mniej stanu. Lubimy to tak utrzymywać w ASP.NET MVC, więc staramy się nie używać stanu sesji w ASP.NET MVC w jak największym stopniu, chyba że naprawdę musimy.

Przechowywanie danych w stanie sesji polega zasadniczo na przechowywaniu ich w pamięci serwera. ~ Jeśli przechowujemy dużą ilość danych, serwer ostatecznie zgłasza wyjątek OutOfMemory i domena aplikacji zostanie uruchomiona ponownie.

Ponadto, jeśli aplikacja ulegnie awarii z jakiegokolwiek powodu, utracimy wszystko, co przechowujemy w pamięci.

~ W farmie internetowej sesja jest przechowywana w systemie rozproszonym, takim jak SQL Server lub Redis Cache, w celu synchronizacji sesji w farmie.