2010-01-27 16 views
21

Ich muss etwas über ASP.NET-Sitzungsstatus verstehen, wie es für IIS 7 und ASP.net 3.5 gilt.ASP.NET Sitzungsstatus und mehrere Arbeitsprozesse

Wenn eine Anwendung konfiguriert ist, in-Process-Sitzungszustand zu verwenden, wird diese Arbeit in Ordnung, wenn es mehrere Arbeitsprozesse sind? Mit anderen Worten, teilen Arbeitsprozesse den Sitzungsstatus?

Die Standardkonfiguration für IIS 7 ist in-process-Sitzungsstatus zu verwenden und ein Maximum von 10 Arbeitsprozessen zuzuteilen. Es scheint dann wahrscheinlich, dass diese Standardkonfiguration funktionieren sollte. Ich habe es mit einer Firma zu tun, die eine ASP.NET MVC-Web-App erstellt hat, die einige Probleme hat, sie beschuldigen die Serverumgebung. Die Behauptung ist, dass, weil ich die Standardeinstellungen von 10 Arbeitsprozessen verwende, das ihren Sitzungsstatus bricht. Ich muss wissen, ob das tatsächlich eine genaue Behauptung ist. Ich habe nie gewusst, dass eine ASP.NET-App nicht mit der Standardkonfiguration funktioniert, daher bin ich etwas verwirrt und muss dies geklärt haben.

+1

Welche Probleme treten bei der Anwendung auf? Auf den ersten Blick klingt es eher nach einem Recyclingproblem für Worker-Prozesse. –

+0

Inproc-Sitzung wird nicht zwischen Arbeitsprozessen geteilt. Setzen Sie einfach ihren App-Pool auf nur 1 und die Probleme werden verschwinden. – NotMe

Antwort

21

Nachdem mehrere Arbeitsprozesse und die Verwendung InProc scheint nicht kompatibel zu sein.

Siehe this:

Wenn Sie Web-Garten-Modus aktivieren, indem Sie das webGarden Attribut auf true im Process Element der Datei Web.config der Anwendung einstellen, nicht InProc Sitzungsstatusmodus verwenden. Wenn Sie dies tun, kann es zu Datenverlusten kommen, wenn verschiedene Anforderungen für dieselbe Sitzung von verschiedenen Arbeitsprozessen bedient werden.

+0

das funktioniert nicht. –

5

Ich kann falsch liegen, aber soweit ich weiß, haben Sie standardmäßig nur 1 Worker-Prozess pro Anwendungsdomäne mit mehreren Worker-Threads zur Bearbeitung von Anfragen. In diesem Fall sollte der In-Proc Session-Status gut funktionieren (die Standardeinstellungen).

Aber wenn Sie mehrere Arbeitsprozesse haben Sie (nicht nur Worker-Threads, tatsächliche Arbeitsprozesse) aus dem Prozesssitzungsstatus benötigen.

Ich denke, mit mehr als 1 Arbeitsprozess in ASP.NET wird Web-Garten-Modus bezeichnet, die Sie speziell aktivieren müssen und wenn Sie dies tun, dann benötigen Sie Out-of-Process-Zustandsverwaltung. Siehe comment box on this page unter der In-Process-Modus-Überschrift.

8

Mehr als ein Arbeitsprozess ist ein "Webgarten". Der Status der Sitzung in Arbeit wird nicht korrekt funktionieren. Sie müssen entweder einen einzelnen Arbeitsprozess für Ihre Webanwendung verwenden oder einen Sitzungsstatusserver oder SQL Server für den Sitzungsstatus verwenden.