Mak*_*ich 3 asp.net wcf soap wsdl visual-studio
在我的ASP.NET WebForms项目中,我引用了WCF服务库项目,该项目包含每个业务对象的不同WCF服务.这些服务托管在IIS中,可以通过我在Global.asax中定义的路由获取WSDL:一个WSDL通过一条路由为每个服务.
我真正需要的是 - 一些选择服务的能力,我想为不同的客户提供服务,并为所选服务集生成一个单一的WSDL.
小智 7
是的,可以配置WCF路由服务并获取WSDL文件,从而形成单独的服务.
步骤1 -HttpGetEnabled set to true
在路由器服务后面的所有WCF服务中设置和配置MEX端点
<service behaviorConfiguration="routingBehv" name="System.ServiceModel.Routing.RoutingService">
<host>
<baseAddresses>
<add baseAddress="http://localhost/WcfRoutingService/RoutingService.svc"/>
</baseAddresses>
</host>
<endpoint address="http://localhost/WcfRoutingService/RoutingService.svc" binding="mexHttpBinding" name="mexEndpoint" contract="System.ServiceModel.Routing.IRequestReplyRouter"/>
</service>
Run Code Online (Sandbox Code Playgroud)
步骤2-配置路由服务
添加端点
<endpoint address="" binding="mexHttpBinding" name="mexEndpoint" contract="System.ServiceModel.Routing.IRequestReplyRouter"/>
Run Code Online (Sandbox Code Playgroud)
添加服务行为
<behaviors>
<serviceBehaviors>
<behavior>
<routing routeOnHeadersOnly="false" filterTableName="routingTable" />
<serviceDebug includeExceptionDetailInFaults="true" />
<serviceMetadata httpGetEnabled="false" />
</behavior>
</serviceBehaviors>
</behaviors>
Run Code Online (Sandbox Code Playgroud)
客户端端点地址应指定"MEX"端点地址
<client>
<endpoint address="http://localhost/PremiumWcfService/PremiumWCFService.svc/mex" binding="mexHttpBinding" contract="*" name="PremiumServiceMex"/>
<endpoint address="http://localhost/StandardWCFService/StandardWCFService.svc/mex" binding="mexHttpBinding" contract="*" name="StandardServiceMex"/>
</client>
Run Code Online (Sandbox Code Playgroud)
指定路由表
<routing>
<filters>
<filter name="StandardServiceMexFilter" filterType="EndpointAddress" filterData="http://tempuri.org/WcfRoutingService/RoutingService.svc/StandardService" />
<filter name="PremiumServiceMexFilter" filterType="EndpointAddress" filterData="http://tempuri.org/WcfRoutingService/RoutingService.svc/sPreminuService" />
</filters>
<filterTables>
<filterTable name="routingTable">
<add filterName="StandardServiceMexFilter" endpointName="StandardServiceMex"/>
<add filterName="PremiumServiceMexFilter" endpointName="PremiumServiceMex"/>
</filterTable>
</filterTables>
</routing>
Run Code Online (Sandbox Code Playgroud)
你们都完成了.您可以通过以下URL单独直接访问服务的WSDL文件:
http://localhost/WcfRoutingService/RoutingService.svc/StandardService
http://localhost/WcfRoutingService/RoutingService.svc/PremiumService
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1834 次 |
最近记录: |