Je suis relativement nouveau à Castle Windsor en particulier et IoC en général. J'enregistrer mon élément comme celui-ci:Castle Windsor: Transient Lifestyle nécessite HttpContext?
public static void Register(IWindsorContainer container)
{
container.Register(Classes.FromAssembly(Assembly.GetAssembly(typeof(GenericBaseRepository)))
.InSameNamespaceAs<GenericBaseRepository>()
.WithService.DefaultInterfaces()
.LifestyleTransient());
}
Je puis résoudre dans un morceau de code qui n'a pas HttpContext:
var baseRepository = ContainerManager.Container.Resolve<IBaseRepository>();
(IBaseRepository étant une interface mise en œuvre par GenericBaseRepository). Cela échoue avec le message suivant:
« HttpContext.Current est nul PerWebRequestLifestyle ne peut être utilisé dans ASP.Net. »
Ce qui me confond, parce que le style de vie que je choisis est transitoire, et non PerWebRequest. Bien sûr, HttpContext n'existe pas pendant une tâche planifiée - mais je n'en ai pas vraiment besoin, je veux juste une instance de mon Repository qui n'interagira avec aucune requête web. Alors, pourquoi Castle Windsor insiste-t-il pour exiger un HttpContext lors de la résolution de mon composant?
Oui, c'était effectivement le cas. Après avoir lutté pour obtenir le bon .pdb pour Castle Core/Windsor et (réussir à entrer dans le code), c'était le coupable. –