如何使用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()))
);
我收到以下错误:
服务'{name}'没有应用程序(非基础架构)端点。
如果我离开:
.Configure(configurer => configurer.ActAs(new DefaultServiceModel()))
似乎忽略了配置中的行为。
这里的正确用法是什么?
答案 0 :(得分:6)
好的,明白了:)
我这样注册:
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中指定的名称相同。
答案 1 :(得分:0)
你快到了。
你需要这个:
.ActAs(new DefaultClientModel(WcfEndpoint.FromConfiguration( <<key In Configuration>> )));