0

나는 SharpArchitecture로 놀고있어 인프라 계층에서 NHibernate에 대한 간단한 AuditInterceptor를 만들려고한다.NHibernate 인터셉터에서 현재 요청 컨텍스트에 액세스

내 문제는 현재 요청 세부 정보를 인터셉터 내에서 액세스 가능하게 만드는 것입니다. 여기에는 현재 사용자 및 서버가 활성 요청을 수신 한 날짜/시간이 포함됩니다.

어떤 종류의 UnitOfWork 패턴을 사용해야합니까? 그렇다면 Interceptor 코드에서 UnitOfWork 객체를 사용할 수있게 만드는 좋은 방법은 무엇입니까?

답변

1

는 지금까지 내가 현재 사용자를 얻을 수있는 가장 좋은 장소를 발견 같다 :

System.Threading.Thread.CurrentPrincipal.Identity.Name 

나는 또한 현재 요청의 날짜/시간을 얻을 필요가 있었다 그것을 만드는 것이 가장라고 판단 CurrentDateTime 속성을 가진 사용자 정의 IPrincipal을 작성한 다음 Global.asax OnAuthenticated 또는 MVC ActionFilter에서 사용자 정의 principal을 설정했습니다.

+0

감사합니다. 내가 무엇을하기로 결정했는지는 어플리케이션 시작시 NHibernate를 설정할 때 인터셉터 생성자에 "IAuditInfoProvider"객체를 전달하는 것입니다. 아직 어떻게 구현할지 모르지만 최소한 요격 코드에 영향을 미치지 않고 나중에 변경할 수 있습니다. Begin/EndRequest에서 수정되고 사용중인 IoC 컨테이너가있는 객체에 주입되는이 (및 기타) 인터페이스를 구현하는 사용자 정의 Context 객체를 만드는 방법을 생각하고 있습니다. 아직도 세부 사항에 대한 확신이 없으며 MVC 및 SharpArchitecture에 완전히 익숙하지 않습니다. –

+0

동일한 문제를 해결할 때 Static 속성/클래스를 사용하지 못하게되었습니다. 스레딩 문제도 처리해야합니다. –