自托管WCF服务的多个实例

时间:2010-10-14 11:54:09

标签: wcf

我有一项服务,它托管在Windows应用程序中。在应用程序中,服务启动如下

public void Initialise()
{
    BasicHttpBinding binding = new BasicHttpBinding();

    ServiceHost host = new ServiceHost(typeof(SampleType));
    host.AddServiceEndpoint(typeof(ISampleService), binding, "http://localhost:6732/Sample/Service/");

    host.Open();
}

现在,如果我运行应用程序的多个实例,我收到错误

  

HTTP无法注册网址   http://localhost:6732/Sample/Service/。   另一个应用已经   使用HTTP.SYS注册此URL。

多个实例是否可以监听同一个网址?

2 个答案:

答案 0 :(得分:0)

您需要在不同的端口上运行它,尝试随机化端口号并在启动服务之前检查端口是否被使用。

您只能在一个端口上运行一个实例,因此解决方案是更改每个实例的端口,如何执行此操作取决于您。

6732是端口,因此可以在每个实例上递增或随机化它。

http://localhost:6732/Sample/Service/

同时查看这两个可能有用的S0帖子:

WCF: Net.TCP multiple bindings, same port, different IP Addresses

Can 2 WCF service processes listen the same port?

答案 1 :(得分:0)

您将无法创建所有接收发送到特定地址/端口的数据的服务的多个实例,Windows必须将传入的网络流量定向到侦听该端口的特定套接字。

我怀疑您尝试做的事情最好通过使用双重绑定(如netTcpBinding)来实现。在这种情况下,您的多个客户端都将连接到发送消息的服务器,然后等待来自该服务器的回调。