这是新手 .

我的服务有4个 endpoints ,有4个不同的 Contract . 这是因为我有一些要求来实现 . 现在,我不想使用固定端口,我读了HERE我可以在 endpoints 配置中使用 listenUriMode="Unique" 来获得第一个使用的空闲端口 .

这工作正常,我的服务正常 . 由于我不知道使用了哪个端口,因此我必须使用WCF发现来访问我的服务 .

我的客户端使用此代码搜索 endpoints

DiscoveryClient discoveryClient = new DiscoveryClient(new UdpDiscoveryEndpoint());
FindCriteria findCriteria = new FindCriteria(typeof(ImyServiceInterface));

findCriteria.Duration = TimeSpan.FromSeconds(5);

FindResponse findResponse = discoveryClient.Find(findCriteria);

MessageBox.Show(string.Format("Endpoints found: {0}", findResponse.Endpoints.Count));

这可行,但仅适用于具有 ImyServiceInterface 接口的 endpoints . 我可以进行4次扫描并获得我的4个 endpoints ,但这听起来像是非常错误的方法(它需要4倍的正常时间才能完成) .

我怎样才能做到这一点?创建另一个 endpoints 并为他提供一个功能来通信所有其他 endpoints ?或者我正在以错误的方式做这一切,我只是在浪费时间?