Frage

Ist es möglich, ASP.NET bis zu mischen, welcher Benutzer mit welcher Session-Variablen auf dem Server verbunden ist? Sind Session-Variablen auf den ursprünglichen Benutzer unabänderlich gebunden, das sie über Zeit, Raum und Dimension erstellt?

War es hilfreich?

Lösung

Ihre ursprüngliche Frage zu beantworten: Sitzungen werden an eine ID eingegeben, die in einem Cookie gesetzt wird. Diese ID wird erzeugt einige Zufallszahl Krypto-Routinen. Es ist nicht eindeutig sein garantiert, aber es ist sehr unwahrscheinlich, dass es jemals in der Spanne des Lebens einer Sitzung dupliziert werden. Selbst wenn Ihre Sitzungen für volle Arbeitstage laufen. Es wäre wahrscheinlich Jahre dauern, für einen wirklich beliebter Ort, um sogar einen doppelten Schlüssel zu erzeugen (keine Statistiken oder Tatsachen, die zu sichern).

Nachdem alles gesagt, dass dies nicht der Fall, dass Ihr Problem mit Session-Werte ist Verwechslungen. Das erste, was ich anfangen würde, zu betrachten ist Connection Pooling. ADO-Pools Verbindungen standardmäßig, aber wenn Sie eine Verbindung mit einem Benutzername / Passwort anfordern, die nicht im Pool ist, sollte es eine neue Verbindung geben. Hinweis, dass eine Performance-Engpass in der Zukunft sein kann, wenn Ihre Website sehr groß ist. Es ist schon eine Weile her, dass ich mit SQL Server gearbeitet, in Oracle ein Anruf, der die Identität des Benutzers wechseln gemacht werden kann. Ich wäre überrascht, wenn es keine Entsprechung in SQL Server ist. Sie könnten versuchen, mit einem generischen Benutzername / Passwort zu Ihrer DB verbinden und dann diesen Identität Schalter Aufruf ausgeführt wird, bevor Sie die Verbindung zum Rest des Codes zurückzugeben.

Andere Tipps

Es hängt von Ihren Session-Provider, wenn Sie die Sitzung Schlüsselgenerierung in eine Art und Weise außer Kraft gesetzt, die nicht mehr eindeutig zuzuordnen ist, dann mehrere Benutzer die gleiche Sitzung zugreifen können.

Was Verhalten sehen Sie? Und sind Sie sicher, dass es keine statische ist im Spiel mit den Variablen Sie sprechen?

, während alles möglich. . . .

Nein, es sei denn, Sie Sitzungsstatus in SQL Server oder eine andere außerhalb des Prozesses Lagerung gelagert und dann mit ihm durcheinander. . .

Die Sitzung an einen Benutzer Cookie gebunden ist, die Chancen, dass in einem normalen Szenario vermasselt ist sehr unwahrscheinlich, jedoch könnte es Probleme, wenn verteilte Sitzungszustand verwendet wird.

Es ist nicht möglich. Die Sitzungen werden an den Schöpfer gebunden.

Haben Sie mischen wollen, oder haben Sie einen Fall, wenn es so aussieht, gemischt?

Weitere Informationen:

Ich habe eine app, die die Benutzer-ID / Passwort aus der Login-Seite und speichert sie in einer Sitzungsvariablen nimmt. Ich plop es in meine Verbindungszeichenfolge für Anrufe in SQL Server zu machen.

Wenn eine Tabelle aktualisiert wird, sind wir in der Datenbank ‚system_user‘ mit dem ‚letzten von aktualisierte‘ Benutzer zu identifizieren. Wir sehen einige seltsame Verhalten in dem der Benutzer wir aufgeführt werden erwar falsch ist, und es ist jemand anderes zeigt.

Können Sie im Debugger Pop und sehen, ob der richtige Wert in der Tat an dieser Verbindungszeichenfolge übergeben wird? Es würde Sie schnell idenfity helfen, welche Seite das Problem eingeschaltet ist.

Vergewissern Sie sich auch, dass keiner des Verbindungscode statische Eigenschaften für den Anschluss oder Benutzer oder ein Benutzer ihrer Verbindung mit dem dem letzten Benutzer ersetzt hat, bevor das Update feuert.

Meine Vermutung ist, dass Sie wieder mit einem statischen Feld auf einer Klasse, um die Verbindungszeichenfolge zu halten. Diese statischen Felder werden über mehrere IIS-Anfragen wiederverwendet werden, so sind Sie wahrscheinlich immer nur die zuletzt in Benutzer in der ‚zuletzt aktualisiert von‘ angemeldet sehen.

BTW, wenn Sie einen wirklich guten Grund haben für so tun, dann sollten Sie nicht so an die DB verbinden werden. Sie verhindert, sich aus der Verwendung Verbindungspooling, die unter hohen Belastungen schaden Leistung geht.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top