2011-04-18 3 views
0

Я использую средство WCF для службы, размещенной в WAS (привязка net.tcp в iis7), и испытывает странную проблему только при запуске холодного приложения (т. Е. Еще не запущен).ПОМОЩЬ! - DefaultServiceHostFactory выполняется до создания application_startup и контейнера

Следующее утверждение должно быть выполнено при первом экземпляре моего контейнера.

DefaultServiceHostFactory.RegisterContainer(c.Kernel); 

Когда услуга запрашивается, я получаю следующее исключение в моем WCF файл_трассировки

Kernel был нулевым, ты забыл назвать DefaultServiceHostFactory.RegisterContainer()

Проблема, как представляется, что ServiceHostFactory пытается создать экземпляр хоста службы до того, как мой контейнер будет создан.

Примечание:

  • Это исключение происходит ПЕРЕД Application_Start выполняется
  • Если приложение работает (и контейнер был инициализирован), то эта служба будет работать, как ожидалось. Приложение можно запустить, перейдя на соответствующий сайт IIS через HTTP или запустив сеанс отладки Visual Studio.

шаги, чтобы воссоздать Issue

  • ВЫПУСКАЙТЕ IISReset к закрытию всех пулов приложений IIS.
  • Вызов службы в вопросе
  • трассировка WCF выплевывает:

    System.ServiceModel.ServiceActivationException: Служба «/abcd.svc» не может быть активирован по причине исключения во время компиляции. Сообщение об исключении: Исключение было выбрано целью вызова. --- > System.Reflection.TargetInvocationException: Исключение было выбрано целью вызова. --- > System.ArgumentNullException: Ядро было null, вы забыли позвонить по умолчаниюServiceHostFactory.RegisterContainer()? Имя Параметр: ядро ​​ в Castle.Facilities.WcfIntegration.WindsorServiceHostFactory`1..ctor (Ikernel ядро) в Castle.Facilities.WcfIntegration.DefaultServiceHostFactory..ctor()

+0

Скажите, пожалуйста, если мне нужно больше объяснить мою ситуацию или сделать ее более ясными. –

ответ

1

Проблема заключается в том, что глобальный характер. asax и все его методы связаны только с обработкой HTTP. Btw. класс в global.asax получен из HttpApplication, который должен сделать это довольно ясным. После того, как вы размещаете приложение в WAS (которое связано с привязкой на основе net.tcp), вы не можете использовать эти методы. Попробуйте использовать что-то вроде AppInitialize.

 Смежные вопросы

  • Нет связанных вопросов^_^