4

如何使用 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()))

似乎配置中的行为被忽略了。

这里的正确用法是什么?

4

2 回答 2

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()))
);

Hosted()用于表明我正在托管服务;否则似乎 WCF 设施将尝试托管它们,从而导致端口冲突。

所以问题是配置文件中服务名称必须是实现的完整类型名称。如果没有人收到错误,说明没有定义端点。所以服务名和windsor中指定的名字一样。

于 2010-04-26T07:25:01.240 回答
0

您快到了。

你需要这个:

.ActAs(new DefaultClientModel(WcfEndpoint.FromConfiguration( <<key In Configuration>> )));
于 2010-04-23T12:42:09.617 回答