5

如何通过 TCP 端口托管 WCF 服务,如何通过这些 TCP 端口监听和使用服务?

也就是说,除了 net.tcp 绑定之外,还有什么方法可以使用 TCP 端口来托管和消费吗?

4

5 回答 5

8

在 WCF 中,您可以自己托管任何服务,方法是创建 ServiceHost 类的实例,使用正确的端点和您希望公开的服务实现对其进行配置,然后调用Open它。这称为自托管,因为您从自己的应用程序中托管服务(及其端口侦听器)。

或者,您可以在 IIS 中托管您的服务,但您应该知道,虽然您可以在 IIS 6 中托管 WCF,但它只允许您托管 HTTP 和 HTTPS 端点。如果您想在 IIS 中托管 TCP 端点(这是一个好主意),您将需要 IIS 7。

在这里阅读更多。

于 2009-06-29T08:52:09.050 回答
0

您可以使用任何端口(前提是您获得了许可)来托管您的 wcf 服务。当使用 IIS 来托管 wcf 服务时,情况有所不同,但在自托管环境中,只需将端口号添加到您的基地址即可。(使用 Vista 或 Server 2008 时,您必须在未以管理员权限运行时授予对端口的访问权限(例如使用 netsh))

要将例如端口 1337 用于 http 服务(或 net.tcp),只需将“:1337/”添加到您的基地址,其余的就为您完成了。

于 2009-06-29T07:23:05.797 回答
0

可能是这个帮助

<services>
  <service behaviorConfiguration="configname"
    name="servicename">
    <endpoint address="" binding="netTcpBinding" bindingConfiguration="MyServiceBinding"
      name="NetTcpBindingEndpoint" bindingName="MyServiceBinding"
      contract="Interface">
      <identity>
        <dns value="localhost" />
      </identity>
    </endpoint>

    <endpoint address="mex" binding="customBinding" bindingConfiguration="myMexTcpBinding"
      name="MexTcpBindingEndpoint" contract="IMetadataExchange" />
    <host>
      <baseAddresses>
        <add baseAddress="net.tcp://localhost:prot/TestService" />
      </baseAddresses>
    </host>
  </service>
</services>
于 2009-06-29T08:05:22.403 回答
0

所有 HTTP 绑定都与 TCP 一起用于传输层。因此,您可以使用 HTTP 绑定和 IIS.6 来托管在特定 TCP 端口上运行的 WCF 服务。

这是有关如何实现此目的的演练:

  • 从配置文件(或代码)配置服务以在所需端口上运行:

    <service name="WCFService" behaviorConfiguration="DefaultBehaviour">
    <host>
      <baseAddresses>
        <add baseAddress="http://localhost:8000/WCFService" />
      </baseAddresses>
    </host>
    <endpoint address="mex" binding="mexHttpBinding" bindingConfiguration="" name="WCFService_mexEndpoint" contract="IMetadataExchange" />
    <endpoint address="" binding="wsHttpBinding" bindingConfiguration="DefaultBinding" name="WCFService_Endpoint" contract="WCFService.IService1" />
    

  • 在 IIS 中创建一个网站(或虚拟目录)并将其绑定配置为在您在 baseAddress 服务配置中选择的端口上运行(以上示例为 8000)。

上述步骤的结果是一个 WCF 服务,该服务在 TCP 端口 8000 上运行,用于传输层,使用 HTTP 作为传输协议。

编辑:我相信你在这里有点困惑。如果您要实现的是二进制传输包,那么目前唯一的解决方案是 net.tcp 绑定,它与 IIS.6 不兼容。如果您只是希望能够选择连接的 TCP 端口,那么任何 HTTP 绑定都可以按照我上面的示例进行此操作,并且可以在 IIS.6 中使用。

于 2009-06-29T08:32:19.743 回答
0

我知道有点晚了。但是,我想您可以使用 Visual Studio 附带的“WCF 服务主机”应用程序。

于 2010-10-13T14:57:48.017 回答