2009-06-15 4 views
1

ASP.NET에서 각 세션은 SessionID 변수로 식별 할 수 있습니다. 현재 각각의 개별 사용자 세션을 식별 할 수있는 프로젝트를 진행 중입니다. 즉 세션 식별자 또는 이에 상응하는 변수를 찾고 있습니다.Windows Forms 응용 프로그램 내에서 현재 세션 식별 : 세션 ID?

응용 프로그램, 환경 및 AppDomain 클래스를 조사했지만 이러한 변수를 찾을 수 없습니다. 그래서 제 질문은 : 응용 프로그램이 현재 처리하고있는 세션을 어떻게 식별해야합니까?

답변

2

아마도 System.Diagnostics.Process.GetCurrentProcess().Id일까요? 그러면 시스템에서 현재 실행중인 프로세스를 고유하게 식별하는 번호가 제공됩니다. 이 번호는 프로세스가 실행 중일 때만 유효하며 다른 프로세스를 종료하면 시작할 때 동일한 번호가 할당 될 수 있습니다.

+0

이 올바른 방향으로 단계처럼 소리 같은 Environment.UserName, Environment.MachineName 또는 Environment.UserDomainName 같은 환경 클래스의 일부 옵션을 확인할 수 있습니다. 그러나 다음에 사용자가 응용 프로그램을 시작할 때 프로세스 ID가 첫 번째 시작 ID ('세션')와 동일하지 않습니다. – dbaw

+0

아니요, 이론적으로 애플리케이션을 두 번 연속으로 시작하고 동일한 프로세스 ID를 얻을 수 있습니다. 유일한 보증은 주어진 시스템에서 동일한 ID로 동시에 실행되는 두 개의 프로세스가 존재하지 않는다는 것입니다. 응용 프로그램 닫기에서 세션 관련 정보를 제거하면 문제가되지 않습니다. –

+0

System.Diagnostics.Process.GetCurrentProcess()를 살펴본 결과 SessionID 속성이 있지만 StartTime 속성은 주로 내 요구 사항을 다루고 있습니다. 시작 시간을 기준으로 세션을 식별 할 수 있습니다. 내가 일하는 프로젝트라면, 이것으로 충분할 것이다. 감사. – dbaw

0

잘 모르겠지만 응용 프로그램 수명주기의 각 인스턴스를 추적하려는 경우 GUID를 적절한 인스턴스 구성원으로 만들 수 있습니다. 새로운 "세션"이 생성되었다고 느낄 때마다 사용자가 로그인 할 때 (또는 로그인 메커니즘이없는 경우 기본 폼이로드 될 때)이 GUID를 만들고 저장할 수 있습니다.

물론 어떤 종류의 서버가 연결된 다중 사용자 환경이 있다고 가정합니다. 그렇지 않으면 실제로 세션이 필요하지 않습니다.

0

당신은

+0

이것은 현재 내가하는 일입니다. 그러나 동일한 사용자의 두 응용 프로그램 시작 이벤트를 구별해야합니다. – dbaw