В настоящее время я внедряю службу, которая использует WCF discovery и предоставляет конечную точку обнаружения и конечную точку объявления. Мне также нужно использовать области для фильтрации объявленных / обнаруженных конечных точек на моем клиенте.
Добавление областей в конечную точку обнаружения прекрасно работает, но я не могу определить правильную конфигурацию для конечной точки объявления. Вот что я придумал:
<serviceBehaviors>
<behavior name="MyServiceBehavior">
<serviceMetadata httpGetEnabled="True"/>
<serviceDiscovery>
<announcementEndpoints>
<endpoint kind="udpAnnouncementEndpoint"
behaviorConfiguration="DiscoveryBehavior" />
</announcementEndpoints>
</serviceDiscovery>
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="DiscoveryBehavior">
<endpointDiscovery>
<scopes>
<add scope="http://My/Scope"/>
</scopes>
</endpointDiscovery>
</behavior>
</endpointBehaviors>
Полагаю, это не правильно, потому что я повторно использую поведение конечной точки, которое я создал для своей конечной точки обнаружения. Но это единственный способ описать мои прицелы.
Я думаю, что использование областей для объявлений должно быть возможным, потому что:
- Нет другого способа отфильтровать полученные объявления
- Класс
EndpointDiscoveryMetadata
(экземпляр которого я получаю при получении объявлений) содержит свойство Области применения .
Но с моей конфигурацией коллекция Scopes
на стороне клиента пуста для всех конечных точек, кроме mex (в ней две области tempuri).
Итак, есть идеи, как правильно объявить области для конечных точек объявления?
Любая помощь будет оценена, большое спасибо заранее.