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