저는 특히 캐슬 윈저와 IoC는 비교적 새로운 편입니다. 나는이처럼 내 구성 요소를 등록하고 : 다음 더있는 HttpContext이없는 코드 조각에 해결하고Castle Windsor : Transient Lifestyle에는 HttpContext가 필요합니까?
public static void Register(IWindsorContainer container)
{
container.Register(Classes.FromAssembly(Assembly.GetAssembly(typeof(GenericBaseRepository)))
.InSameNamespaceAs<GenericBaseRepository>()
.WithService.DefaultInterfaces()
.LifestyleTransient());
}
:
var baseRepository = ContainerManager.Container.Resolve<IBaseRepository>();
이 (IBaseRepository가 GenericBaseRepository에 의해 구현 된 인터페이스 인). 이것은 다음과 같은 메시지와 함께 실패합니다
"HttpContext.Current가 null PerWebRequestLifestyle은 ASP.Net에서 사용할 수 있습니다."나를 혼란
, 내가 선택한 라이프 스타일, PerWebRequest 과도하지 않기 때문에. 물론 HttpContext는 예약 된 작업 중에는 존재하지 않지만 실제로 필요하지는 않습니다. 단지 웹 요청과 상호 작용하지 않는 저장소의 인스턴스 만 원할뿐입니다.
그래서 Castle Windsor가 내 구성 요소를 해결할 때 HttpContext를 요구한다고 주장하는 이유는 무엇입니까?
예, 실제로 그렇습니다. Castle Core/Windsor에 적합한 .pdb를 얻으려고 고심하고 (코드로 들어가기 위해 관리함), 이것이 범인이었습니다. –