如何使用多种服务行为公开单个WCF服务?

我有一个WCF服务,需要满足以下要求:

> Endpoint1:它应该使用netTCP绑定与Windows身份验证.
> Endpoint2:它应该使用netTCP绑定和自定义用户名和密码验证.

我可以通过创建两个服务行为来单独执行这两个操作,一个用于Windows身份验证,一个用于用户名和密码,但是这样我必须公开2个服务而不是1个用于上述功能.我正在寻找一种方式,我只能通过一种服务和不同的端点配置,我能够满足要求.

代码段和配置会很有帮助.

最佳答案 这是WCF支持的方案之一,单个接口公开为2个不同的端点.

它们将具有两个不同的地址,但将指向相同的代码.

<service 
    name="Microsoft.ServiceModel.Samples.CalculatorService"
    behaviorConfiguration="CalculatorServiceBehavior">
    <!-- This endpoint is exposed at the base address provided by host:       http://localhost/servicemodelsamples/service.svc  -->
   <endpoint address=""
        binding="basicHttpBinding"
        contract="Microsoft.ServiceModel.Samples.ICalculator" />
   <!-- secure endpoint exposed at {base address}/secure:       http://localhost/servicemodelsamples/service.svc/secure -->
  <endpoint address="secure"
        binding="wsHttpBinding"
        contract="Microsoft.ServiceModel.Samples.ICalculator" />
  ...
</service>

见:http://msdn.microsoft.com/en-us/library/ms751515.aspx

点赞