Я использую средство WCF для службы, размещенной в WAS (привязка net.tcp в iis7), и испытываю странную проблему только при холодном запуске приложения (т.е. еще не запущенном).
Следующий оператор должен выполняться при первом создании моего контейнера.
DefaultServiceHostFactory.RegisterContainer(c.Kernel);
Когда служба запрашивается, я получаю следующее исключение в моем файле трассировки WCF
Ядро было пустым, вы забыли вызвать DefaultServiceHostFactory.RegisterContainer()
Похоже, проблема заключается в том, что ServiceHostFactory пытается создать экземпляр хоста службы до создания моего контейнера.
Примечание.
- Это исключение происходит ДО выполнения Application_Start.
- Если приложение запущено (и контейнер инициализирован), служба будет работать должным образом. Приложение можно запустить, перейдя на соответствующий сайт IIS через HTTP или запустив сеанс отладки из Visual Studio.
Шаги по воссозданию проблемы
- Выполните IISReset, чтобы закрыть все пулы приложений IIS.
- Позвоните в интересующую вас службу
Трассировка WCF выдает:
System.ServiceModel.ServiceActivationException: служба «/abcd.svc» не может быть активирована из-за исключения во время компиляции. Сообщение об исключении: Исключение было сгенерировано целью вызова. ---> System.Reflection.TargetInvocationException: Исключение было сгенерировано целью вызова. ---› System.ArgumentNullException: ядро было пустым, вы забыли вызвать DefaultServiceHostFactory.RegisterContainer()? Имя параметра: ядро в Castle.Facilities.WcfIntegration.WindsorServiceHostFactory`1..ctor(ядро IKernel) в Castle.Facilities.WcfIntegration.DefaultServiceHostFactory..ctor()