2011-09-21 3 views
0

내 asp.net MVC 응용 프로그램에서 페이지가로드 될 때마다 또는 사용자가 특정 동작을 수행 할 때마다 액세스 할 수있는 변수 (사용자가 가지고있는 시스템 종류에 대한 플래그)를 추가하고 싶습니다. 나는 이것을 위해 세션 변수를 추가하기로 결정했다. (합리적인가?) 데이터베이스의 테이블에서 플래그를 가져와야한다. 내 계획은 Session_Start에 변수를 설정하는 것이었지만 데이터베이스를 쿼리해야 할 때 올바른 방법이 아닌 것처럼 보였습니다. Global.asax에서해야하는지 잘 모르겠습니다. 이 변수는 어디에서 채워야합니까? 아니면 더 좋은 방법이 있을까요?asp.net에서 데이터베이스의 세션 변수를 추가하는 가장 좋은 방법은 무엇입니까?

미리 감사드립니다.

답변

0

세션 변수는 합리적인 선택이며 session_start는 값을 가져올 수있는 장소입니다. 그러나이 값이 사용자별로 다르면 사용자 신원이 필요합니다. 인증은 사용자의 신원을 확인하고 세션 시작이 아닙니다 (둘 다 ASP.NET에서 독립적입니다) - 따라서 session_start 대신 더 나은 베팅은 Application_AcquireRequestState이며, 사용자가 인증되었는지 여부를 확인해야하며, 그렇다면 세션 변수가 있는지 확인하십시오 설정되었습니다. 설정되지 않은 경우 데이터베이스에서 값을 가져올 수 있습니다.

약간의 변형은 주문형 로딩, 즉 플래그 값을 얻기위한 래퍼 메소드 생성입니다. 래퍼 메서드는 값이 이미 검색되었는지 여부를 확인합니다. 그렇지 않으면 값을 가져 와서 적절한 저장소 (예 : 세션 상태)에 값을 캐시합니다.

+0

감사합니다. 래퍼 메서드가 session_start 대신 각 요청 또는 페이지로드의 값을 확인한다는 아이디어입니까? – Kai

+0

@ 카이 (Kai, wrapper method)는 플래그 값이 실제로 필요할 때 사용되어야합니다. 따라서 "on demand (또는 lazy) loading"이름을 사용하십시오. 래퍼 메서드는 플래그 값에 액세스해야하는 유일한 방법입니다. 나머지 코드는 가져온 경우 값과 캐시되는 값을 인식하지 못합니다. – VinayC

관련 문제