WCF 服务在 2 个不同的服务契约上公开 2 个端点

2024-01-10

我有一个 WCF 服务,我正在尝试对其进行配置,以便它在不同的 URL 下公开两个端点,引用不同的功能。

我想要拥有的是Service1,暴露方法 A、B、C 和Service2,暴露方法D,E。 我希望能够同时浏览本地主机/WebServiceName/Service1/Service.svc and 本地主机/WebServiceName/Service2/Service.svc.

其他应用参考本地主机/WebServiceName/Service1/Service.svc应该只看到包含方法 A、B 和 C 的接口。他们不应该看到任何有关Service2界面。而对于Service2同样地。

到目前为止,我已经在 WCF 服务中定义了两个接口,I_服务1 and I_服务2.

我在 web.config 中添加了两个端点,如下所示:

<endpoint address="http://localhost/WebServiceName/Service1/" binding="wsHttpBinding" contract="WebServiceName.I_Service1" bindingConfiguration="Binding1" />
<endpoint address="http://localhost/WebServiceName/Service2/" binding="wsHttpBinding" contract="WebServiceName.I_Service2" bindingConfiguration="Binding2" />  

在 enpoint 中使用完整地址的建议来自这里:IIS下的多个端点 https://stackoverflow.com/questions/1182725/multiple-endpoints-under-iis?rq=1

但还是无法浏览本地主机/WebServiceName/Service1/Service.svc。我收到:

Description: HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable.  Please review the following URL and make sure that it is spelled correctly. 

我可以成功浏览本地主机/WebServiceName/Service.svcwsdl 包括方法 A、B、C、D、E。但这在我想要的行为中应该是错误的。

我是否错过了什么?

更新:按照这篇文章http://allen-conway-dotnet.blogspot.ro/2011/09/exusing-multiple-binding-types-for.html http://allen-conway-dotnet.blogspot.ro/2011/09/exposing-multiple-binding-types-for.html我为这些端点创建了两个不同的合同服务。但目前我只看到Service1当我浏览它时。Service2显然不存在(出现 HTTP 404 错误相关问题)。

配置如下:

<services>
   <service behaviorConfiguration="WebServiceName.ServiceBehavior1" name="WebServiceName.Service1">
    <endpoint address="" binding="wsHttpBinding" bindingConfiguration="Binding1"
     contract="WebServiceName.I_Service1" />
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
     <host>
       <baseAddresses>
         <add baseAddress="http://localhost/WebServiceName/Service1/Service.svc" />
       </baseAddresses>
     </host>
   </service>
   <service behaviorConfiguration="WebServiceName.ServiceBehavior2" name="WebServiceName.Service2">
    <endpoint address="" binding="wsHttpBinding" bindingConfiguration="Binding1"
     contract="WebServiceName.I_Service2" />
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
     <host>
       <baseAddresses>
         <add baseAddress="http://localhost/WebServiceName/Service2/Service.svc" />
       </baseAddresses>
     </host>
   </service>
  </services>

我一直这样做的方法如下:为服务设置一个“基地址”,并将端点地址指定为不同的文本以附加到该基地址上...

 <service name="MyNamespace.MyService">
    <endpoint address="FirstEndpointAddress" binding="netTcpBinding"
      name="FirstEndpointName"
      contract="MyNamespace.FirstEndpointContract" />
    <endpoint address="SecondEndpointAddress" binding="netTcpBinding"
      name="SecondEndpointName"
      contract="MyNamespace.SecondEndpointContract" />
    <host>
      <baseAddresses>
        <add baseAddress="net.tcp://localhost:8733/MyBaseAddress" />
      </baseAddresses>
    </host>
  </service>

所以在你的情况下基地址可能是localhost/WebServiceName端点 1 的端点地址可能是Service1/Service.svc。同样,对于端点 2,它可能是Service2/Service.svc。我可以看到您已遵循建议将完整地址放入端点地址中,但我只能说我已经成功地这样做了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WCF 服务在 2 个不同的服务契约上公开 2 个端点 的相关文章

随机推荐