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 № 1Dlaczego 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.