現在、 WCFディスカバリーを使用し、ディスカバリーエンドポイントとアナウンスエンドポイントを提供するサービスを実装しています。また、クライアントでアナウンス/検出されたエンドポイントをフィルタリングするためにスコープを使用する必要があります。
ディスカバリーエンドポイントにスコープを追加することはうまくいきますが、アナウンスメントエンドポイントの正しい構成を理解できません。これが私が思いついたものです:
<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が含まれています。
しかし、私の構成ではScopes
、クライアント側のコレクションは、mex 1を除くすべてのエンドポイントで空です(2つのtempuriスコープが含まれています)。
では、アナウンスエンドポイントのスコープを正しく宣言する方法はありますか?どんな助けでもありがたいです、事前に感謝します。