如何通过TCP端口托管WCF服务,如何通过这些TCP端口监听它并使用服务?
也就是说,除了net.tcp绑定之外,是否有某种方法可以使用TCP端口进行托管和使用?
答案 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" />
创建一个网站(或虚拟目录),并将其绑定配置为在您在baseAddress服务配置中选择的端口上运行(上例中为8000)。
上述步骤的结果是一个WCF服务,它使用HTTP作为传输协议,在TCP端口8000上运行传输层。
编辑:我相信你在这里有点混乱。如果你想要实现的是二进制传输包,那么唯一的解决方案就是net.tcp绑定,它与IIS.6不兼容。如果您只是希望能够选择连接的TCP端口,那么任何HTTP绑定都可以执行此操作,如上例所示,并且可以在IIS.6中使用。
答案 4 :(得分:0)
我知道它有点迟了..但是,我想你可以使用Visual Studio附带的“WCF服务主机”应用程序。