Ich habe eine ASP.NET-Anwendung, die Session.SessionID verwendet, um zu verhindern, dass mehrere Benutzer die gleichen Daten zur gleichen Zeit anzeigen.Kann die ASP.NET-Sitzungs-ID auf zwei Computern gleichzeitig identisch sein?
Ich habe eine Tabelle, die eine Reihe von Bildern (gespeichert in BLOB) enthält, die Verarbeitung erfordern. Nur ein Benutzer soll dasselbe Bild gleichzeitig anzeigen können. Um dies zu erreichen, wird, während jeder Datensatz von einem Benutzer abgerufen wird, der Datensatz mit der Session.SessionID aktualisiert. Diese Aktualisierung erfolgt in einem ReaderWriterLock.
Ich habe einen Test gemacht, um sicherzustellen, dass der ReaderWriterLock richtig funktioniert und kann bestätigen, dass nur eine Sitzung den Code innerhalb dieses Blocks gleichzeitig ausführen kann.
Meine aktuelle Theorie ist, dass zwei verschiedene Benutzer die gleiche SessionID zur gleichen Zeit erhalten. Ein Benutzer dieser Anwendung darf gesperrte Datensätze oder nicht gesperrte Bilder anzeigen.
Ich habe die Anwendung geändert, um die SessionID in der Fußzeile jeder Seite anzuzeigen, so dass, wenn das Problem erneut auftritt, ich den SessionID-Wert überprüfen kann.
Ich habe einige Artikel online gesehen, die darauf hindeuten, dass SessionID nicht eindeutig ist und einige sagen, dass die SessionID einzigartig ist. Ich verstehe, dass SessionID nicht für immer eindeutig ist, aber kann der SessionID-Wert für aktive Sitzungen als einmalig angesehen werden?
This forum describes a similar problem
Ich habe auch einige Vorschläge lesen, die ein Guid sollte im Session-Objekt und als eine eindeutige Kennung anstelle der Session-ID gespeichert werden.
Vielen Dank für die Antworten bisher. Hier ist eine Klärung basierend auf den bisherigen Antworten:
"Für immer gesperrt" - wir verhindern dies durch eine Sperrzeit von 5 Minuten. Bevor ein Benutzer ein Bild sperrt, während wir im ReaderWriterLock sind, machen wir eine "Bereinigung" von alten Sperren (die Bilder entsperrt für mehr als 5 Minuten entsperrt), eine Abfrage, um das älteste entsperrte Bild und eine Update-Anweisung zu "sperren" Bild zur aktuellen Sitzung.
Eine mögliche Ursache des Problems wäre, wenn ein Benutzer ein Bild "sperrt", dann aber den PC für eine kurze Pause verlässt. Wenn sie 5 Minuten lang nichts tun, wird das Bild auf dem Bildschirm entsperrt und möglicherweise von einem anderen Benutzer geöffnet. Ich erwähnte dieses Szenario, als das Problem gemeldet wurde und mir wurde versichert, dass die Benutzer kontinuierlich gearbeitet haben.
"Anderes Fenster/Tab" - Ich habe den Fehler eigentlich nicht mit meinen eigenen Augen gesehen, aber die Person, die das Problem gemeldet hat, hat mir gesagt, dass es zwei verschiedene PCs und zwei verschiedene Benutzernamen des angemeldeten Benutzers sind.
Hoffentlich nun, dass ich die Session ID auf der Seite anzeigen, beim nächsten Mal werde ich in der Lage sein, mit Sicherheit zu sagen, ob es die gleiche Session ID auf zwei Maschinen ist oder wenn es ein anderes Problem ist. Dieses Problem trat während der Testphase nie auf, daher scheint es ein Symptom für eine größere Anzahl gleichzeitiger Benutzer zu sein.
Vielen Dank für die Antworten bis jetzt und ich werde diese Frage aktualisieren, wie weitere Informationen zur Hand kommen.
Es scheint, dass der Benutzer mir die ganze Geschichte nicht gab. Die Sitzungs-ID ist in unserem Fall gemäß der akzeptierten Antwort eindeutig. Zwei Benutzer konnten dasselbe Bild zur selben Zeit sehen, da Benutzer 1 für den 5-minütigen Entsperrprozess "verlassenes Bild" inaktiv war. Das Timeout "verlassenes Bild" wurde erhöht, um dem Sitzungszeitlimit zu entsprechen, um dieses Problem zu vermeiden.
YESSS finden !! Mehrere Tabs/Fenster desselben Benutzers –