2010-06-29 3 views
0

ASP.NET MVC를 사용하여 작은 CMS 시스템을 구축하고 Castle Windsor를 사용하여 구현 된 factory로 인스턴스화 된 userRepository를 사용하는 사용자 정의 역할 공급자가 있습니다.데이터베이스를 변경할 때 내 사용자 지정 역할 공급자가 역할을 업데이트하지 않는 이유는 무엇입니까?

관리자 권한을 가진 사람은 백엔드 관리를 사용하여 데이터베이스에 저장된 사용자의 역할을 변경할 수 있습니다.

하지만 방금 전에 역할을 변경 한 사용자 (내가 테스트 사용자를 잠시 사용함)에 로그온 할 때마다 역할이 업데이트되지 않습니다. 로그 아웃을 시도했는데 아무 결과도 없었습니다. 사용 된 역할은 동일하게 유지됩니다. 나는 또한 브라우저의 캐시와 쿠키를 지우려고했지만 다시 결과가 없습니다.

데이터가 데이터베이스에서 올바르게 업데이트됩니다.

로그인 한 사용자의 역할을 출력 해 보았습니다. 데이터가 내 사용자 정의 roleprovider에서 업데이트되었지만 roleprovider의 데이터가 그대로 유지되는 것을 확인할 수있었습니다. 그래서 분명히 roleprovider는 각 요청에 대해 데이터베이스에서 데이터를 가져 오지 않습니다.

재미있는 점은, 내가 역할을 변경하고 내 웹 사이트를 다시 게시하면 변경 사항이 그대로 유지되어야한다는 것입니다. 매번 내 웹 사이트를 다시 게시하는 옵션이 아니라 관리자가 사용자의 역할을 변경합니다. 매우 동적이지 않은 thats.

왜 이런 일이 발생하고 어떻게 해결할 수 있는지에 대한 아이디어가 있으십니까?

답변

0

당신의 역할 공급자가 Windsor의 기본 라이프 스타일 인 싱글 톤이라고 생각합니다. 따라서 구현 방법에 따라 첫 번째 요청에서 끌어온 데이터를 보유하고있을 가능성이 높습니다. PerWebRequest 또는 Transient로 설정하십시오.

See the documentation for more details on lifestyles.

관련 문제