我有一项服务,它托管在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。
多个实例是否可以监听同一个网址?
答案 0 :(得分:0)
您需要在不同的端口上运行它,尝试随机化端口号并在启动服务之前检查端口是否被使用。
您只能在一个端口上运行一个实例,因此解决方案是更改每个实例的端口,如何执行此操作取决于您。
6732是端口,因此可以在每个实例上递增或随机化它。
http://localhost:6732/Sample/Service/
同时查看这两个可能有用的S0帖子:
WCF: Net.TCP multiple bindings, same port, different IP Addresses
答案 1 :(得分:0)
您将无法创建所有接收发送到特定地址/端口的数据的服务的多个实例,Windows必须将传入的网络流量定向到侦听该端口的特定套接字。
我怀疑您尝试做的事情最好通过使用双重绑定(如netTcpBinding)来实现。在这种情况下,您的多个客户端都将连接到发送消息的服务器,然后等待来自该服务器的回调。