2011-05-05 2 views
0

일정 기간 동안 사용하지 않으면 로그 아웃하는 방법을 보여주는 자습서를 찾고 싶습니다.ASP.net에서 20 분 동안 사용하지 않으면 로그 아웃 (DB에 행 쓰기)

로그 아웃은 SQL 데이터베이스에 행을 쓰는 것을 의미합니다. 데이터베이스 테이블은 user_status라는 열로 설계되었습니다. 사용자가 로그인하면 ASP는 "로그인 된"행을 데이터베이스 테이블에 씁니다. 특정 비활성 pd 후에 데이터베이스에 행을 쓰는 자동 메커니즘을 찾고 싶습니다.

+0

IIS에는 세션을 관리하고 세션에 대한 시간 제한 설정을 제공하는 기능이 있다고 생각합니다. –

+1

끝으로? 왜 활동 부족인지 알고 싶습니까? 예를 들어 일종의 데이터베이스 정리 계약을 수행했다면 SQL Server에서 로그인 한 사용자를 찾아 x 분 안에 아무런 활동도 생성하지 않은 작업을 실행하는 경향이 있습니다. @maple_shaft가 언급했듯이, ASP.NET은 이미 "프론트 엔드"측면에서 세션 관리 메커니즘으로 구워졌습니다. –

답변

2

ASP.NET은 비활성 후 실행할 수있는 이벤트를 제공하지 않습니다. 세션 종료 이벤트 (올바르게 기억한다면 Session_end)를 연결할 수는 있지만 이벤트가 매우 안정적이지는 않습니다.

내가 생각할 수있는 가장 쉬운 방법은 사용자가 테이블에서 마지막으로 수행 한 시간을 추적하는 것입니다. 그런 다음 모든 작업 (디스플레이 및 포스트 백 모두)에서 마지막 활동 시간을 업데이트하십시오. 매분마다 20 분 동안 활동하지 않은 사람들을 위해 테이블을 스캔하는 루틴을 운영하십시오. 해당 사용자가 발견되면 user_status 항목을 재설정하십시오.

+0

지난 20 분 동안 아무 것도하지 않은 사람들을 매 순간마다 점검하는 루틴을 가지고 있다면 좀 더 구체적 일 수 있습니까? 덕분에 – user133466

+0

난 콘솔 애플 리케이션을 개발하고 작업 스케줄러를 통해 제어거야. 작업 스케줄러가없는 경우 내장 Windows 작업 스케줄러를 사용할 수 있지만 5 분마다 실행 만 가능합니다. –

+0

@ user133466, IIS가 이미 이것을 제어 할 수 있기 때문에 루틴을 작성할 필요가 없습니다. http://www.checkbox.com/kb/articles/kb-1036-survey_software_iis_timeout_settings.asp이 작업을 구성한 다음 다른 사람들이 제안한 작업을 수행하고 세션 종료 이벤트에 사용자 지정 코드를 넣기 만하면됩니다. –

1

응용 프로그램 (Global.asax)의 SessionEnd 이벤트에서 이와 비슷한 작업을 수행 할 수 있습니다.

그러나 SessionState 모드가 InProc 인 경우에만 SessionEnd가 발생합니다.

관련 문제