我目前有一个 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
并获取其他元数据?