2009-11-30 4 views
4

ASP.NET에서 모든 세션 개체의 컬렉션을 얻으려면 어떻게해야합니까? (세션 객체에 저장되어있는 객체 컬렉션을 찾고 있지는 않지만 모든 세션 객체 자체를 찾고 있음을 참고하십시오.)ASP.NET에서 Session State 개체의 컬렉션을 얻으려면 어떻게해야합니까?

이것은 모든 활성 세션을 나열하는 관리자 페이지 용이며 사용자가 로그인 한 경우 또한 사용자 이름을 나열 등

언어 : C# 프레임 워크 : ASP.NET MVC 1.0 (3.5 SP1)

편집 : 지금까지 내가 생각하지만 언급하지 않았다 솔루션과 좋은 답변을 몇 내 원래 질문에 session_onStart 및 session_onEnd에서 세션 개체를 추가 및 제거하는 것입니다. 아직까지이 작업을 수행하지 않은 이유는 Session 객체 컬렉션이 우리에게 노출되지 않는다고 생각하기 어렵 기 때문입니다. ASP.NET이이 세션 컬렉션을 일부 형식의 컬렉션에 저장하므로 해당 컬렉션을 확보하는 방법을 찾으려고합니다. 직접 관리 할 수있는 추가 코드를 작성하게되어 기쁩니다.하지만이 기능이 이미 존재하는 경우 추가 오버 헤드와 유지 보수 코드 작성에 대한 팬이 아닙니다.

+0

방금 ​​활성 사용자 목록을 찾고 계십니까? – Saar

+0

활성 로그인 사용자 목록도 흥미로울 것입니다. 나는 그것을 어떻게 얻을 것입니까? – Guy

+0

나는 asp.net memebership db를 안다. 이를 참고로, IsActive 또는 IsLoggedIn 필드를 db에 추가합니다. 그것은 사용자가 로그인 할 때뿐만 아니라 로그 아웃 할 때 업데이트 될 수 있습니다. 나는 이것이 모든 활성 세션 객체를 찾는 것보다 나은 방법이라고 생각한다. 물론이를 달성 할 수있는 더 많은 방법이 있어야합니다. – Saar

답변

3

당신은 글로벌 asax 및 다음과 같은 방법을 사용할 수 있습니다.

sub session_onStart() 

    application.lock() 
    // your logic 
    application.unlock() 

end sub 

sub session_onEnd() 

    application.lock() 
// your logic 
    application.unlock() 

end sub 
+1

+1 예, 이것이 제 대안 솔루션입니다. 그러나 다른 대답에서 언급했듯이이 컬렉션을 이미 사용할 수 없다고 생각하는 것이 어렵습니다. – Guy

2

global.asax 파일을 사용하고 Session_OnStart 이벤트에 사용자 지정 코드를 추가하면 사용자 정보를 가져와 관리자 페이지를 제공 할 수있는 데이터베이스에서 사용자 정보를 업데이트 할 수 있습니다.

+0

+1 내가 생각한 한 가지 해결책이 있습니다. Session 객체의 목록을 만들어 Application 객체에 저장하려고했지만 이미 그 목록을 사용할 수 없다고 생각합니다. – Guy

관련 문제