WCF 中同一服务的多个服务行为

Muliple Service Behaviors to same service in WCF

我们能否在 WCF.If 中将多个服务行为附加到同一服务,是的,我们如何才能做到这一点 - 通过配置文件或作为属性?

是的,你可以。 您需要配置您的行为,并在服务标签中配置每个行为,如下所示:

<service 
    name="Microsoft.ServiceModel.Samples.CalculatorService"
    behaviorConfiguration="CalculatorServiceBehavior">
  <!-- First behavior:
       http://localhost/servicemodelsamples/service.svc  -->
  <endpoint address=""
            binding="basicHttpBinding"
            contract="Microsoft.ServiceModel.Samples.ICalculator" />
  <!-- Second behavior, with secure endpoint exposed at {base address}/secure:
       http://localhost/servicemodelsamples/service.svc/secure -->
  <endpoint address="secure"
            binding="wsHttpBinding"
            contract="Microsoft.ServiceModel.Samples.ICalculator" />
</service>

ICalcular 的相同服务,用于两种不同的行为。

在此处阅读更多内容:https://msdn.microsoft.com/en-us/library/ms751515.aspx

是的,我们可以创建多个端点

<services>
  <service name="ReportService.ReportService">       
    <endpoint 
           address="ReportService"  
           binding="netTcpBinding"           
           contract="ReportService.IReportService">
    </endpoint>
     <endpoint 
           address="ReportService"  
           binding="basicHttpBinding"           
           contract="ReportService.IReportService">
    </endpoint>        
  </service>
</services>

我们可以创建多个端点,例如 this.in 客户端 app.config 或它显示的 webconfig 文件

<bindings>
        <netTcpBinding>
            <binding name="netTcpBinding_IReportService" />
        </netTcpBinding>

        <basicHttpBinding>
            <binding name="basicHttpBinding_IReportService" />
        </basicHttpBinding>
    </bindings>
    <client>
        <endpoint address="" binding="netTcpBinding"
            bindingConfiguration="netTcpBinding_IReportService" contract="ServiceReference.IReportService"
            name="netTcpBinding_IReportService">                
        </endpoint>

        <endpoint address="" binding="basicHttpBinding"
            bindingConfiguration="basicHttpBinding_IReportService" contract="ServiceReference.IReportService"
            name="basicHttpBinding_IReportService">                
        </endpoint>
    </client>

那么我们在引用的时候应该提到绑定名称

      ServiceReference.ReportServiceClient client = new ServiceReference.ReportServiceClient(netTcpBinding_IReportService); 

现在它将与 netTcpBinding 一起工作

是的,你可以。

ServiceEndpoint 有一个 Behaviors 集合。 因此,如果您使用 C# 代码创建服务,则可以向该集合添加任何行为:标准行为或您自己的行为。如何创建自定义行为并将其添加到 endpoint see here 的示例。请记住,您可以根据需要创建和添加任意数量的行为。

如果要在配置中添加行为,则需要创建行为配置扩展Here is an example hot to create it 并将其添加到配置文件中的端点。

编辑:

服务行为 can be added in absolute same way