Переходный образ жизни требует 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 не существует во время запланированной задачи - но мне это на самом деле не нужно, я просто хочу экземпляр моего репозитория, который не будет взаимодействовать ни с одним веб-запросом.

Итак, почему Castle Windsor настаивает на необходимости HttpContext при разрешении моего компонента?

1 ответ

Решение

Посмотрите на полное сообщение об исключении. Ваш корневой компонент может быть временным, но исключение указывает одну из его зависимостей, используемых для образа жизни веб-запроса.

Взгляните на вид отладчика диагностики Windsor, который может помочь вам точно определить его.

Другие вопросы по тегам