Замок WcfFacility - Поведение службы

Как мне использовать 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 ответа

Решение

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

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

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 Facility попытается разместить их, что приведет к конфликтам портов.

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

Ты почти там.

Ты нуждаешься в этом:

.ActAs(new DefaultClientModel(WcfEndpoint.FromConfiguration( <<key In Configuration>> )));
Другие вопросы по тегам