Castle WcfFacility - Поведение службы - PullRequest
4 голосов
/ 23 апреля 2010

Как мне использовать Castle WcfFacility и заставить его использовать стандартные настройки файла конфигурации Wcf?

Если я регистрируюсь так:

container.Register(
AllTypes.Pick()
    .FromAssemblyNamed("{ServicesAssembly}") // <-- service assembly here
    .If(type => type.Name.EndsWith("Service"))
    .WithService.FirstInterface()
    .Configure(configurer => configurer.LifeStyle.Transient)
    .Configure(configurer => configurer.Named(configurer.Implementation.Name))
    .Configure(configurer => configurer.ActAs(new DefaultServiceModel()))
);

Я получаю следующую ошибку:

Служба '{имя}' имеет нулевые конечные точки приложения (неинфраструктурные).

Если я уйду:

.Configure(configurer => configurer.ActAs(new DefaultServiceModel()))

, похоже, что поведение в конфигурацииигнорируется.

Какое здесь правильное использование?

Ответы [ 2 ]

6 голосов
/ 26 апреля 2010

ОК, разобрался:)

Я регистрируюсь так:

container.Register(
AllTypes.Pick()
    .FromAssemblyNamed("{ServicesAssembly}") // <-- service assembly here
    .If(type => type.Name.EndsWith("Service"))
    .WithService.FirstInterface()
    .Configure(configurer => configurer.LifeStyle.Transient)
    .Configure(configurer => configurer.Named(configurer.Implementation.Name))
    .Configure(configurer => configurer.ActAs(new DefaultServiceModel().Hosted()))
);

Хостинг () здесь, чтобы указать, что я предоставляю услуги;иначе кажется, что средство WCF попытается разместить их, что приведет к конфликтам портов.

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

0 голосов
/ 23 апреля 2010

Ты почти у цели.

Вам нужно это:

.ActAs(new DefaultClientModel(WcfEndpoint.FromConfiguration( <<key In Configuration>> )));
...