2

Моя цель - зарегистрировать контейнер Windsor для моего сервиса, отличного от http WCF. Однако я не могу понять, где поставить код для регистрации и инициализации контейнера.WCF Windsor Регистрация контейнера

Я попытался положить ...

Factory="Castle.Facilities.WcfIntegration.DefaultServiceHostFactory, Castle.Facilities.WcfIntegration" 

... на моем ServiceHost заявление в моем SVC-файл, однако это не представляется вызывать метод Application_Start() в моем Global.asax.cs к Огонь.

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

public static void AppInitialize() 
{ 
} 

... Однако этот метод не срабатывает.

метод получил от замка Виндзор ...

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

Я мог бы действительно сделать с кодом пример, который показывает, где именно зарегистрировать контейнер. Кроме того, где я удаляю контейнер.

Спасибо.

+1

вы видели этот вопрос? http://stackoverflow.com/q/8789043/23697 – stombeur

+1

Проверьте правильность ответа @Anton. Возможно, действительно использует HTTP WCF, так как вы упоминаете global.asax.cs. Если так, то его ответ правильный. Я поддержу его, если это будет так. – Falcon

ответ

0

Пробовал ли статический конструктор в противоположность статическому методу?

что-то вроде

static MyClass() 
{ 
    // setup windsor 
    WindsorContainer windsorContainer = new WindsorContainer(); 
    .. 

} 

Кто-то обсуждали, что именно вы пытаетесь достичь только с StructureMap - должно быть достаточно легко поменять, что для битов Windsor ....

http://lostechies.com/jimmybogard/2008/07/30/integrating-structuremap-with-wcf/

+0

Привет, проблема здесь заключается в том, что конвейер IIS вызывает то, что затем можно использовать для создания контейнера. – Remotec

0

Я знаю, что это было спрошено некоторое время назад, но вот пара подводных камней, которые вы, возможно, захотите проверить.

  • Проверьте правильность ваших файлов Global.asax и Global.asax.cs? Указывает ли ваш файл Global.asax правильный файл codebehind?
  • Является ли подпись защищенного void Application_Start (объект отправителя, EventArgs e) правильным?
  • Можете ли вы запустить Application_Start(), если вы не добавили какой-либо специальный код Castle Windsor?

Global.asax можно добавить, щелкнув правой кнопкой мыши проект и найти глобальный файл приложения. Убедитесь, что файл .asax включает

<%@ Application Codebehind="Global.asax.cs" Inherits="YourNamespace.Global" Language="C#" %> 

и ничего больше.

(Если вы нашли решение на своем, добавьте его метка как ответ. Это будет полезно для других.)

+0

Global.asax.cs не используется в среде не-HTTP. Ответ от темы. – Falcon

+0

@ Falcon да, это правда. Но у него есть файл Global.asax.cs, который немного запутан. – Anton

1

Это не проблема AppInitialize. Что-то, что вы должны сделать, это добавить Castle.Facilities.WcfIntegration.WcfВозможность вашего контейнера:

container.AddFacility<Castle.Facilities.WcfIntegration.WcfFacility>(); 

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

  • Джейсон
+0

Это исправило проблему для меня. –

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