2017-08-11 3 views
0

Basierend auf dieser article ich meine JsonResult wie diesesSaving JsonResult zu HttpContext.Session

HttpContext.Session.SetObjectAsJson(multiple, jsonresult); 

dann speichere ich es bin Abrufen wie diese

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

mein Problem ist, dass ich verschiedene Daten bin immer wenn ich es abrufe. Zum Beispiel hat das jsonresult eine FileUploadsID, aber myComplexObject hat eine andere ID.

wenn ich

verwenden
HttpContext.Session.GetString(multiple); 

Die FileUploadsID ist richtig. Es ist nur, wenn ich das GetObjectFromJson verwende, dass es anders ist.

Habe ich das richtig gemacht? Ich bin mir nicht sicher, was passiert.

+0

Sie sollten eine Datei nicht innerhalb des Sitzungsstatus speichern. es ist keine gute Übung. Was hoffst du zu erreichen? – Win

+0

Ich muss das jasonresult wieder verwenden, damit ich Daten an die Datenbank senden kann, gelehrt, dass das ein guter Weg wäre – user8392603

+0

Nein, ist es nicht. Sie speichern entweder im Dateisystem oder im schlimmsten Fall speichern in der Datenbank zwischen den Seiten. – Win

Antwort

0

Warum ist es eine schlechte Praxis, die Datei im Sitzungszustand zu speichern?

Zunächst ist HTTP zustandslos. In ASP.NET MVC möchten wir dies so beibehalten. Daher versuchen wir, den Sitzungsstatus in ASP.NET MVC nicht so oft wie möglich zu verwenden, es sei denn, wir müssen dies wirklich tun.

Das Speichern von Daten im Sitzungszustand speichert sie im Wesentlichen im Speicher des Servers. ~ Wenn wir große Datenmengen speichern, wird der Server schließlich die OutOfMemory-Ausnahme auslösen und die App-Domäne wird neu gestartet.

Darüber hinaus, wenn die Anwendung aus irgendeinem Grund abstürzt, verlieren wir alles, was wir im Speicher gespeichert haben.

~ In der Webfarm wird Sitzung in einem verteilten System wie SQL Server oder Redis Cache gespeichert, um die Sitzung in der gesamten Farm zu synchronisieren.