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

时间:2012-09-09 15:13:37

标签: wcf

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

  1. Endpoint1:它应该使用netTCP绑定与Windows身份验证。
  2. Endpoint2:它应该使用netTCP绑定和自定义用户名和密码验证。
  3. 我能够通过创建两个服务行为来单独执行这两个操作,一个用于Windows身份验证,另一个用于用户名和密码,但是这样我必须公开2个服务而不是1个用于上述功能。我正在寻找一种方式,我只能通过一种服务和不同的端点配置,我能够满足要求。

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

1 个答案:

答案 0 :(得分:2)

这是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