如何通过TCP端口承载WCF?

如何通过TCP端口承载WCF?,tcp,wcf,wcf-binding,net.tcp,Tcp,Wcf,Wcf Binding,Net.tcp,如何通过TCP端口承载WCF服务,以及如何通过这些TCP端口侦听和使用WCF服务 也就是说,除了net.tcp绑定之外,是否有其他方法可以使用tcp端口承载和使用wcf服务?您可以使用任何端口(只要您获得了该端口的权限)来承载wcf服务。当使用IIS托管wcf服务时,情况有所不同,但在自托管环境中,只需将端口号添加到您的基址,就完成了。(使用Vista或Server 2008时,如果未使用管理员权限(例如使用netsh)运行,则必须授予对端口的访问权限) 要为http服务(或net.tcp)使用

如何通过TCP端口承载WCF服务,以及如何通过这些TCP端口侦听和使用WCF服务

也就是说,除了net.tcp绑定之外,是否有其他方法可以使用tcp端口承载和使用wcf服务?

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

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

这可能有帮助吗

<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>

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

以下是如何实现这一目标的演练:

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

    
    

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

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


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

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

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


阅读更多。

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

因此,基本上,在windows xp中,托管n消费可以通过3种方式完成1.自托管2.IIS 3.作为windows服务,打开TCP端口并使用它,属于自托管,或者是托管n消费wcf服务的另一种方式,或者有其他方式吗?有关使用netsh在此处打开端口的更多信息:基本上,在windows xp中,托管n消费可以通过3种方式完成1.自托管2.IIS 3.作为windows服务,打开TCP端口并使用它,属于自托管,或者是托管n消费wcf服务的另一种方式,或者是TCP下的其他方式?Windows XP不运行IIS 7,因此您不能在XP下的IIS上托管TCP端点。您可以将Windows服务主机设置为WCF服务,但这只是自托管的另一个示例。因此,基本上,在Windows xp中,可以通过3种方式使用主机1.自托管2.IIS 3.作为Windows服务,打开TCP端口并使用它,是采用自托管方式,还是采用另一种方式托管n个使用wcf服务的服务,还是采用其他方式,即TCP?我认为您可以使用IIS 7中的WAS托管TCP。HTTP是一种应用程序协议,而不是传输。因此,基本上,在windows xp中,托管n消费可以通过3种方式完成1.自托管2.IIS 3.作为windows服务,因此打开TCP端口并使用它属于自托管,还是托管n消费wcf服务的另一种方式,或者是否有其他方式,即TCP?
<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" />