Warum ist eine Sitzung in einer ASP.NET MVC-Anwendung eine Katastrophe?

Warum wird es gesagt?In ASP.NET MVC-Anwendungen sollten keine Sitzungsvariablen verwendet werden ? Ich bin rübergekommendiese Antwort das sagt so. In diesem Fall, wie pflege ich die Werte über Anfragen wie Angemeldete Benutzerinformationen und einige relevante Daten, die mit seinem Konto verbunden sind?

Das istDarinAntwort von.

Warum verwenden Sie HttpContext.Current in einer ASP.NET MVC-Anwendung? Niemals benutzen. Sogar in klassischen ASP.NET-Webforms-Anwendungen ist das böse, aber in ASP.NET MVC ist es eine Katastrophe, die den Spaß an diesem netten Webframework zunichte macht.

questionAnswers(2)

dass dies der Fall iststaatenlos, so wie das Web ist. ASP.NET Web Forms ist ein Versuch, ein zustandsbehaftetes Paradigma über eine zustandslose Umgebung nachzuahmen.Es ist eine Lüge, mit anderen Worten.

Das Verwenden der Sitzungsvariablen in einer ASP.NET MVC-Anwendung ähnelt dem Binden eines Horns an den Kopf eines Pferdes und dem Nennen eines Einhorns.

um Daten beizubehalten. Die TempData-Funktionalität verwendet standardmäßig Sitzung, um die Daten beizubehalten.

Sie sollten die Verwendung der Sitzung so weit wie möglich minimieren. Der Grund dafür ist, dass die Sitzung für alle Anforderungen gesperrt wird, um eine Beschädigung des Sitzungsstatus zu verhindern. Aus diesem Grund werden beispielsweise mehrere Ajax-Anforderungen serialisiert. Mehr InformationenHier

Sie können Alternativen verwenden, um Daten zwischen Anforderungen beizubehalten, z. B. dieCookieValueProvider, das Teil von MVC Futures ist, um Cookie-Daten an das Modell zu binden. Sie können Daten im tatsächlichen DOM auch als ausgeblendete Felder beibehalten, diese sollten jedoch so weit wie möglich minimiert werden, da sich die Größe der Daten auf den Netzwerkverkehr zum und vom Browser auswirkt.

Ich würde in Betracht ziehen, einen anderen Datenspeicher für Ihre Webanwendung zu verwenden, wenn Ihr Hauptspeicher langsam ist. Zum Beispiel SQLServer CE oder eine eingebettete RavenDB.

yourAnswerToTheQuestion