我目前有一个 WCF 客户端,它能够进行临时服务发现以查找在本地子网上运行的(未知)服务。我想实现一种方法,让用户通过在文本框中输入 URI 来指定要使用的服务端点,并让客户端将此 URI 解析为EndpointAddress,并在此过程中收集有关服务的其他元数据。即,我需要收集EndpointIdentity在EndpointDiscoveryBehavior.
我试图通过使用来实现这一点DiscoveryClient.Resolve(),但我只收到该ResolveResponse.EndpointDiscoveryMetadata属性的 null 。
String Address = "net.tcp://machine-name:12345/MyService"
DiscoveryClient discoveryClient = new DiscoveryClient(new UdpDiscoveryEndpoint());
var criteria = new ResolveCriteria()
{
Address = new EndpointAddress(Address)
};
var result = discoveryClient.Resolve(criteria);
//scv is null here.....
var svc = result.EndpointDiscoveryMetadata;
我找到了很多关于 的信息,但关于 的信息DiscoveryClient.Find()并不多DiscoveryClient.Resolve()。
所以我的问题是:
- 这是 的预期用途
DiscoveryClient.Resolve()吗? MetadataResolver这里更合适吗?- 如何将 URI 解析为 a
EndpointAddress并获取其他元数据?