如何将多个ASP.NET WCF服务合并成一个WSDL文件?

2026-03-30 12:311阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计431个文字,预计阅读时间需要2分钟。

如何将多个ASP.NET WCF服务合并成一个WSDL文件?

在我ASP.NET WebForms项目中,我使用了WCF服务库项目。该项目包含每个业务对象的非WCF服务。这些服务托管在IIS中,可以通过我在Global.asax中定义的路由获取WSDL:每个WSDL通过一条路由为每个对象提供。

在我的ASP.NET WebForms项目中,我引用了WCF服务库项目,该项目包含每个业务对象的不同WCF服务.这些服务托管在IIS中,可以通过我在Global.asax中定义的路由获取WSDL:一个WSDL通过一条路由为每个服务.

我真正需要的是 – 一些选择服务的能力,我想为不同的客户提供服务,并为所选服务集生成一个单一的WSDL.

是的,可以配置WCF路由服务并获取WSDL文件,从而形成单独的服务.

步骤1 – 将HttpGetEnabled设置为true并在路由器服务后面的所有WCF服务中配置MEX端点

<service behaviorConfiguration="routingBehv" name="System.ServiceModel.Routing.RoutingService"> <host> <baseAddresses> <add baseAddress="localhost/WcfRoutingService/RoutingService.svc"/> </baseAddresses> </host> <endpoint address="localhost/WcfRoutingService/RoutingService.svc" binding="mexHttpBinding" name="mexEndpoint" contract="System.ServiceModel.Routing.IRequestReplyRouter"/> </service>

步骤2-配置路由服务

添加端点

<endpoint address="" binding="mexHttpBinding" name="mexEndpoint" contract="System.ServiceModel.Routing.IRequestReplyRouter"/>

添加服务行为

<behaviors> <serviceBehaviors> <behavior> <routing routeOnHeadersOnly="false" filterTableName="routingTable" /> <serviceDebug includeExceptionDetailInFaults="true" /> <serviceMetadata localhost/PremiumWcfService/PremiumWCFService.svc/mex" binding="mexHttpBinding" contract="*" name="PremiumServiceMex"/> <endpoint address="localhost/StandardWCFService/StandardWCFService.svc/mex" binding="mexHttpBinding" contract="*" name="StandardServiceMex"/> </client>

指定路由表

<routing> <filters> <filter name="StandardServiceMexFilter" filterType="EndpointAddress" filterData="tempuri.org/WcfRoutingService/RoutingService.svc/StandardService" /> <filter name="PremiumServiceMexFilter" filterType="EndpointAddress" filterData="tempuri.org/WcfRoutingService/RoutingService.svc/sPreminuService" /> </filters> <filterTables> <filterTable name="routingTable"> <add filterName="StandardServiceMexFilter" endpointName="StandardServiceMex"/> <add filterName="PremiumServiceMexFilter" endpointName="PremiumServiceMex"/> </filterTable> </filterTables> </routing>

你们都完成了.
您可以通过以下URL单独直接访问服务的WSDL文件:

如何将多个ASP.NET WCF服务合并成一个WSDL文件?

localhost/WcfRoutingService/RoutingService.svc/StandardService localhost/WcfRoutingService/RoutingService.svc/PremiumService

本文共计431个文字,预计阅读时间需要2分钟。

如何将多个ASP.NET WCF服务合并成一个WSDL文件?

在我ASP.NET WebForms项目中,我使用了WCF服务库项目。该项目包含每个业务对象的非WCF服务。这些服务托管在IIS中,可以通过我在Global.asax中定义的路由获取WSDL:每个WSDL通过一条路由为每个对象提供。

在我的ASP.NET WebForms项目中,我引用了WCF服务库项目,该项目包含每个业务对象的不同WCF服务.这些服务托管在IIS中,可以通过我在Global.asax中定义的路由获取WSDL:一个WSDL通过一条路由为每个服务.

我真正需要的是 – 一些选择服务的能力,我想为不同的客户提供服务,并为所选服务集生成一个单一的WSDL.

是的,可以配置WCF路由服务并获取WSDL文件,从而形成单独的服务.

步骤1 – 将HttpGetEnabled设置为true并在路由器服务后面的所有WCF服务中配置MEX端点

<service behaviorConfiguration="routingBehv" name="System.ServiceModel.Routing.RoutingService"> <host> <baseAddresses> <add baseAddress="localhost/WcfRoutingService/RoutingService.svc"/> </baseAddresses> </host> <endpoint address="localhost/WcfRoutingService/RoutingService.svc" binding="mexHttpBinding" name="mexEndpoint" contract="System.ServiceModel.Routing.IRequestReplyRouter"/> </service>

步骤2-配置路由服务

添加端点

<endpoint address="" binding="mexHttpBinding" name="mexEndpoint" contract="System.ServiceModel.Routing.IRequestReplyRouter"/>

添加服务行为

<behaviors> <serviceBehaviors> <behavior> <routing routeOnHeadersOnly="false" filterTableName="routingTable" /> <serviceDebug includeExceptionDetailInFaults="true" /> <serviceMetadata localhost/PremiumWcfService/PremiumWCFService.svc/mex" binding="mexHttpBinding" contract="*" name="PremiumServiceMex"/> <endpoint address="localhost/StandardWCFService/StandardWCFService.svc/mex" binding="mexHttpBinding" contract="*" name="StandardServiceMex"/> </client>

指定路由表

<routing> <filters> <filter name="StandardServiceMexFilter" filterType="EndpointAddress" filterData="tempuri.org/WcfRoutingService/RoutingService.svc/StandardService" /> <filter name="PremiumServiceMexFilter" filterType="EndpointAddress" filterData="tempuri.org/WcfRoutingService/RoutingService.svc/sPreminuService" /> </filters> <filterTables> <filterTable name="routingTable"> <add filterName="StandardServiceMexFilter" endpointName="StandardServiceMex"/> <add filterName="PremiumServiceMexFilter" endpointName="PremiumServiceMex"/> </filterTable> </filterTables> </routing>

你们都完成了.
您可以通过以下URL单独直接访问服务的WSDL文件:

如何将多个ASP.NET WCF服务合并成一个WSDL文件?

localhost/WcfRoutingService/RoutingService.svc/StandardService localhost/WcfRoutingService/RoutingService.svc/PremiumService