Замок 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>> )));