2009-06-15 2 views
1

In ASP.NET kann jede Sitzung anhand ihrer SessionID-Variable identifiziert werden. Derzeit arbeite ich an einem Projekt, für das ich jede einzelne Benutzersitzung identifizieren möchte. Mit anderen Worten, ich suche nach einer Sitzungskennung oder einer äquivalenten Variablen.Identifizieren der aktuellen Sitzung in der Windows Forms-Anwendung: Sitzungs-ID?

Ich habe in den Klassen Application, Environment und AppDomain gesucht, aber ich konnte eine solche Variable nicht finden. Meine Frage ist also: Wie soll man die Session (s) identifizieren, die eine Anwendung gerade bearbeitet?

Antwort

2

Vielleicht System.Diagnostics.Process.GetCurrentProcess().Id würde Ihre Bedürfnisse abdecken? Dadurch erhalten Sie eine Nummer, die den aktuell laufenden Prozess auf dem System eindeutig identifiziert. Die Nummer ist nur gültig, während der Prozess ausgeführt wird, und wenn sie beendet wurde, kann jedem anderen Prozess beim Start dieselbe Nummer zugewiesen werden.

+0

wie ein Schritt in die richtige Richtung Sounds. Ich kann jedoch nicht garantieren, dass die Prozess-ID beim nächsten Start einer Anwendung nicht identisch mit der ID des ersten Starts ("Sitzung") ist. – dbaw

+0

Nein, in der Theorie können Sie die Anwendung zweimal hintereinander starten und erhalten die gleiche Prozess-ID. Die einzige Garantie, die Sie haben, ist, dass auf einem gegebenen System niemals zwei Prozesse gleichzeitig mit derselben ID laufen. Das sollte kein Problem sein, wenn Sie sitzungsbezogene Informationen zum Schließen der Anwendung entfernen. –

+0

Ich habe System.Diagnostics.Process.GetCurrentProcess() untersucht und obwohl es eine Eigenschaft SessionID gibt, deckt die Eigenschaft StartTime meine Bedürfnisse weitgehend ab. Man kann eine Sitzung basierend auf ihrer Startzeit identifizieren. Für das Projekt arbeite ich, das wird ausreichen. Vielen Dank. – dbaw

0

Ich bin mir nicht ganz sicher, ob ich Ihnen folge, aber wenn Sie versuchen, jede Instanz des Lebenszyklus der Anwendung zu verfolgen, können Sie eine GUID als Instanzmitglied an einer geeigneten Stelle erstellen. Wann immer Sie der Meinung sind, dass eine neue "Sitzung" erstellt wurde, können Sie diese GUID erstellen und speichern - wahrscheinlich, wenn sich der Benutzer anmeldet (oder das Hauptformular lädt, wenn Sie keinen Login-Mechanismus haben).

Ich nehme natürlich an, dass Sie eine Multi-User-Umgebung mit irgendeiner Art von Server haben, ansonsten kann ich keine Notwendigkeit für Sitzungen sehen.

0

Sie könnten einige der Optionen in der Umweltklasse wie Environment.UserName, Environment.MachineName oder Environment.UserDomainName überprüfen

+0

Das mache ich zur Zeit. Ich möchte jedoch auch zwei Anwendungsstart-Ereignisse vom selben Benutzer unterscheiden. – dbaw