我正在开发WCF服务并使用UdpDiscoveryEndpoint
自动连接服务。当新服务启动时,它是可发现的,但随后被卡住并且无法从客户端发现。以下是我如何托管UdpDiscoveryEndpoint
的一些代码。
ServiceHost hostQmsService = new ServiceHost(typeof(MyService));
hostQmsService.Description.Behaviors.Add(new ServiceDiscoveryBehavior());
hostQmsService.AddServiceEndpoint(new UdpDiscoveryEndpoint() { });
hostQmsService.Open();
这就是我搜索我的服务的方式:
DiscoveryClient discoveryClient = new DiscoveryClient(new UdpDiscoveryEndpoint());
FindCriteria findCriteria = new FindCriteria(typeof(MyService))
{
MaxResults = 1,
Duration = new TimeSpan(0, 0, 0, 5)
};
FindResponse findResponse = discoveryClient.Find(findCriteria);
_endpointAddresses = findResponse.Endpoints;
_endpointAddress = findResponse.Endpoints.Count > 0 ? findResponse.Endpoints[0].Address : null;
它在新服务启动时起作用,但在工作几个小时后,服务无法被发现。