2016-12-20 23 views
0

我對溫莎城堡,尤其是IoC都比較陌生。 我註冊我的組件是這樣的:溫莎城堡:瞬態生活需要HttpContext?

public static void Register(IWindsorContainer container) 
    { 
    container.Register(Classes.FromAssembly(Assembly.GetAssembly(typeof(GenericBaseRepository))) 
     .InSameNamespaceAs<GenericBaseRepository>() 
     .WithService.DefaultInterfaces() 
     .LifestyleTransient()); 
    } 

我然後在一段代碼不具有HttpContext的解決它:

var baseRepository = ContainerManager.Container.Resolve<IBaseRepository>(); 

(IBaseRepository是由GenericBaseRepository實現的接口)。這種失敗,出現以下消息:

「HttpContext.Current爲null PerWebRequestLifestyle只能在ASP.Net中使用。」

其迷惑我,因爲我選擇的生活方式是短暫的,不PerWebRequest。 當然,HttpContext在計劃任務期間不存在 - 但我並不真正需要它,我只想要一個不會與任何Web請求交互的Repository實例。

那麼,爲什麼Castle Windsor在解決我的組件時堅持要求HttpContext呢?

回答

3

查看完整的異常消息。您的根組件可能是暫時的,但異常表明它的一個依賴項使用每個Web請求生活方式。

看看溫莎的diagnostics debugger view,這可能會幫助您找出它。

+1

是的,事實確實如此。在努力爲Castle Core/Windsor獲得正確的.pdb之後,並且(努力進入代碼),這是罪魁禍首。 –