是否可以在同一端口上的 HTTP 中创建另一个端点?

Posted

技术标签:

【中文标题】是否可以在同一端口上的 HTTP 中创建另一个端点?【英文标题】:Is it possible to create an other endpoint in HTTP on the same port? 【发布时间】:2020-03-18 09:36:29 【问题描述】:

我的一个伙伴在特定端口上创建了一个在 Net.TCP 上工作的 C# WCF 服务,有人问我是否可以在此 WCF 服务上创建另一个端点,以便通过 HTTP 协议使用它同一个端口?

如何使用两种不同的协议 Net.TCP + HTTP 使用 WCF 服务?

感谢您的回答:)

编辑:你有关于如何在 WCF 服务中实现 HTTP + Net.TCP 端点的示例吗?

【问题讨论】:

应该可以在two TCP services 之间共享一个端口,但是当两者之一是 HTTP 侦听器时,这可能不起作用。 感谢您的回答 Wiktor Zychla。您有关于如何在 WCF 服务中实现 HTTP 端点的示例吗? 【参考方案1】:

据我所知,这是完全不可能的。但是服务可以在Net.TCP+Http 上通过不同的端口号正常工作。

<services>
      <service  name="ConsoleApp3.TestService">
        <endpoint address="" binding="netTcpBinding" contract="ConsoleApp3.ITestService" ></endpoint>
        <endpoint address="http" binding="basicHttpBinding" contract="ConsoleApp3.ITestService"></endpoint>
        <endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange"></endpoint>
        <host>
          <baseAddresses>
            <add baseAddress="net.tcp://localhost:21012"/>
            <add baseAddress="http://localhost:21013"/>
          </baseAddresses>
        </host>
      </service>
</services>

Net.TCP 端口共享只适用于服务地址不同的场景,不能真正实现端口共享。 如果有什么我可以帮忙的,请随时告诉我。

【讨论】:

感谢亚伯拉罕·钱的回答。您有关于如何在 WCF 服务中实现 HTTP + Net.TCP 端点的示例吗? 以上配置适用于自托管WCF服务(控制台应用)。对于托管在 IIS 中的服务,只需从默认 WCF 项目模板中的 WebConfig 中删除上述配置中的基地址,然后在 IIS 站点绑定模块中添加 Http 绑定和 Net.tcp 绑定。

以上是关于是否可以在同一端口上的 HTTP 中创建另一个端点?的主要内容,如果未能解决你的问题,请参考以下文章

WCF 和 REST 应用程序在同一端口上使用不同的端点,可以吗?

是否可以使用同一个端口启用 tcp、http 和 websocket?

在 qt 中创建另一个网络线程

同一浏览器页面中两个端点之间的WebRTC?

每次在 django 中创建另一行时创建一行

在python中创建另存为函数