DiscoveryWithScopes 示例演示如何使用范围对可发现的终结点进行分类,以及如何用于DiscoveryClient对终结点执行异步搜索。 在服务上,此示例演示如何通过添加终结点发现行为并使用它将范围应用于终结点,从而自定义每个终结点的发现,并控制终结点的可被发现性。 在客户端上,这个示例介绍了客户端如何创建 DiscoveryClient,并通过在 FindCriteria 中添加范围来微调搜索参数以包含这些范围。 此示例还演示了客户端如何通过添加终止条件来限制响应。
服务功能
此项目演示添加到 ServiceHost 的两个服务终结点。 每个终结点都有一个 EndpointDiscoveryBehavior 与之关联。 此行为用于为两个终结点添加 URI 范围。 范围用于区分每个终结点,以便客户端可以微调搜索。 对于第二个终结点,可以通过将 Enabled 属性设置为 false 来禁用可发现性。 这可确保不会将与此终结点关联的发现元数据作为任何发现消息的一部分发送。
客户端功能
              FindCalculatorServiceAddress() 方法演示如何使用 DiscoveryClient 并传入具有两个限制的 FindCriteria。 范围将添加到条件中,属性 MaxResults 设置为 1。 此范围将结果限制为仅发布相同范围的服务。 设置为 MaxResults 1 将等待的响应 DiscoveryClient 限制为最多 1 个终结点。 
              Find调用是一个同步操作,会阻止线程直到达到超时或找到一个端点。
使用此示例
此示例使用 HTTP 终结点并运行此示例,必须添加适当的 URL ACL。 有关详细信息,请参阅 配置 HTTP 和 HTTPS。 在提升的权限下执行以下命令应添加相应的 ACL。 如果命令不按原样工作,可能需要将域和用户名替换为以下参数:
netsh http add urlacl url=http://+:8000/ user=%DOMAIN%\%UserName%生成解决方案。
从生成目录运行服务可执行文件。
运行客户端可执行文件。 请注意,客户端能够找到该服务。