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 并将其添加到配置文件中的端点。
编辑:
我们能否在 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 并将其添加到配置文件中的端点。
编辑: