如何通过TCP端口托管WCF?

时间:2009-06-29 07:19:07

标签: tcp wcf wcf-binding net.tcp

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

也就是说,除了net.tcp绑定之外,是否有某种方法可以使用TCP端口进行托管和使用?

5 个答案:

答案 0 :(得分:8)

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

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

了解更多here

答案 1 :(得分:0)

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

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

答案 2 :(得分: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>

答案 3 :(得分: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服务,它使用HTTP作为传输协议,在TCP端口8000上运行传输层。

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

答案 4 :(得分:0)

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