0

我们正在使用 WCFFacility 从托管 (IIS 7.5) 环境中设置服务。我们需要为每个服务提供两个端点,为 .NET 客户端提供 WSHttp,为其他所有人提供 WebHttp。这可能吗?

我们使用的代码:

_container.Register(
    Component
        .For<ISomeService>()
        .ImplementedBy<SomeService>()
        .AsWcfService(new DefaultServiceModel()
        .Hosted()
        .PublishMetadata(mex => mex.EnableHttpGet())
        .AddEndpoints(
            WcfEndpoint.BoundTo(new WSHttpBinding()).At("v1/ws"),
            WcfEndpoint.BoundTo(new WebHttpBinding()).At("v1/rest")
        ))
    );

进而:

RouteTable.Routes.Add(new ServiceRoute("", new DefaultServiceHostFactory(_container.Kernel), typeof(ISomeService)));

我认为我们不能真正混合 ws/web 端点,但这可以通过其他方式实现吗?我们不想回退到 xml 配置,但我们需要配置端点。

4

1 回答 1

1

经过一整天的挖掘和尝试,我找到了解决方案。除了最终获得帮助/wsdl 页面外,未以任何方式进行测试。所以我暂时搁置这个问题。

_container.Register(
    Component
    .For<ISomeService>()
    .ImplementedBy<SomeService>()
    .AsWcfService(new RestServiceModel().Hosted())
    .AsWcfService(new DefaultServiceModel().Hosted()
        .PublishMetadata(mex => mex.EnableHttpGet())
        .AddEndpoints(
            WcfEndpoint.ForContract<ISomeService>().BoundTo(new WSHttpBinding())
        )
    )
);

RouteTable.Routes.Add(new ServiceRoute("v1/rest", new WindsorServiceHostFactory<RestServiceModel>(_container.Kernel), typeof(ISomeService)));
RouteTable.Routes.Add(new ServiceRoute("v1/ws", new WindsorServiceHostFactory<DefaultServiceModel>(_container.Kernel), typeof(ISomeService)));
于 2013-02-04T10:03:52.970 回答