如何通过 TCP 端口托管 WCF 服务,如何通过这些 TCP 端口监听和使用服务?
也就是说,除了 net.tcp 绑定之外,还有什么方法可以使用 TCP 端口来托管和消费吗?
如何通过 TCP 端口托管 WCF 服务,如何通过这些 TCP 端口监听和使用服务?
也就是说,除了 net.tcp 绑定之外,还有什么方法可以使用 TCP 端口来托管和消费吗?
在 WCF 中,您可以自己托管任何服务,方法是创建 ServiceHost 类的实例,使用正确的端点和您希望公开的服务实现对其进行配置,然后调用Open
它。这称为自托管,因为您从自己的应用程序中托管服务(及其端口侦听器)。
或者,您可以在 IIS 中托管您的服务,但您应该知道,虽然您可以在 IIS 6 中托管 WCF,但它只允许您托管 HTTP 和 HTTPS 端点。如果您想在 IIS 中托管 TCP 端点(这是一个好主意),您将需要 IIS 7。
在这里阅读更多。
您可以使用任何端口(前提是您获得了许可)来托管您的 wcf 服务。当使用 IIS 来托管 wcf 服务时,情况有所不同,但在自托管环境中,只需将端口号添加到您的基地址即可。(使用 Vista 或 Server 2008 时,您必须在未以管理员权限运行时授予对端口的访问权限(例如使用 netsh))
要将例如端口 1337 用于 http 服务(或 net.tcp),只需将“: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 服务。
这是有关如何实现此目的的演练:
从配置文件(或代码)配置服务以在所需端口上运行:
<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 中使用。
我知道有点晚了。但是,我想您可以使用 Visual Studio 附带的“WCF 服务主机”应用程序。