在看wcf广播事件的程序时候,运行到
ILogService service = DuplexChannelFactory<ILogService>.CreateChannel(client,
new WSDualHttpBinding(), new EndpointAddress("http://localhost:8567/server"));
报出个异常
HTTP 无法注册 URL http://+/Temporary_Listen_Addresses/144ff7cb-10a4-4836-b76a-1a516da4ebda/,因为另一应用程序正在使用 TCP 端口 80。
当我们用WSDualHttpBinding进行双工通信时
在默认情况下,回调接口会使用80端口,clientBaseAddress为http://localhost:80 而80端口已经被IE浏览器占用,
如果我们不在客户端的代理端做任何事情的话,很可能出这个错误
解决方法:
1修改代码
DuplexChannelFactory<ILogService> channelFactory = new DuplexChannelFactory<ILogService>(instanceContext);
WSDualHttpBinding ws = new WSDualHttpBinding();
ws.ClientBaseAddress = new Uri("http://localhost:8566");
channelFactory.Endpoint.Binding = ws;
channelFactory.Endpoint.Address = new EndpointAddress("http://localhost:8567/server");
ILogService service = channelFactory.CreateChannel();
2修改配置文件
<wsDualHttpBinding clientBaseAddress="http://localhost:8566/server"/>