我们公司有两个不同的网络,17 和 18
- 170.17.xxx.xxx
- 170.18.xxx.xxx
在 17 网络上有一个可发现的 WCF 服务正在运行。这是由以下代码配置的:
host.AddDefaultEndpoints();
host.AddServiceEndpoint(new UdpDiscoveryEndpoint());
EndpointDiscoveryBehavior behavior = new EndpointDiscoveryBehavior();
behavior.Scopes.Add(scope);
foreach(ServiceEndpoint endpoint in host.Description.Endpoints)
{
if(endpoint.IsSystemEndpoint || endpoint is DiscoveryEndpoint ||
endpoint is AnnouncementEndpoint || endpoint is ServiceMetadataEndpoint)
continue;
endpoint.Behaviors.Add(behavior);
}
具有范围的行为被添加到所有非系统端点,并且可以通过在网络上发送 udp 数据包(UdpDiscoveryEndpoint 的默认实例)来发现它。
客户端通过使用默认 UdpDiscoveryEndpoint 构造 DiscoveryClient 来发现服务。
DiscoveryClient discoveryClient = new DiscoveryClient(new UdpDiscoveryEndpoint());
FindCriteria criteria = new FindCriteria(typeof(T));
criteria.Scopes.Add(scope);
FindResponse discovered = discoveryClient.Find(criteria);
discoveryClient.Close();
当客户端和服务都在同一网络上运行时,这可以正常工作。但我希望有一个在 18 网络上运行的客户端,它能够在 17 网络上找到服务。
那么是否可以使用 DiscoveryClient 和 UdpDiscoveryEndpoint 发现其他网络上的服务?
编辑
或者这可能是防火墙问题?