WCF ルーティング サービスと Discovery を組み合わせようとしていますが、連携できないようです。これは私のシナリオです:
クライアントからの要求がルーティング サービスに届きます。ルーティング サービスで検出を使用して正しいエンドポイントを見つけ、見つかったエンドポイントに着信メッセージを送信するようにします。ただし、ルーティング サービスは [ http://tempuri.org]名前空間を検出サービスに送信します。したがって、検出サービスはルーター サービスで受信メッセージの名前空間を想定しているため、その名前空間でサービスを見つけることができません。
クライアント側で検出構成を使用するとエンドポイントを解決できるため、検出サービスを正しく構成したことはわかっています。ただし、私の運用シナリオでは、クライアント側での検出はできません。また、検出を使用してエンドポイントを解決しない場合、ルーター サービスは機能します。
これは私のルーティングと検出の構成です:
<routing>
<filters>
<filter name="GreetingsFilter" filterType="EndpointName" filterData="GreetingsRoutingEndpoint"/>
</filters>
<filterTables>
<filterTable name="DefaultTable">
<add filterName="GreetingsFilter" endpointName="GreetingsDiscoveryEndpoint"/>
</filterTable>
</filterTables>
</routing>
<client>
<endpoint behaviorConfiguration="LoggingBehavior" binding="basicHttpBinding"
contract="*" name="GreetingsDiscoveryEndpoint"
kind="dynamicEndpoint" endpointConfiguration="dynamicEndpointConfiguration" />
</client>
<standardEndpoints>
<dynamicEndpoint>
<standardEndpoint name="dynamicEndpointConfiguration">
<discoveryClientSettings>
<endpoint address="http://server/DiscoveryProxy.svc" behaviorConfiguration="DiscoveryEndpointBehavior" binding="wsHttpBinding" bindingConfiguration="NoSecurityBinding" name="DiscoveryEndpoint" kind="discoveryEndpoint" endpointConfiguration="managedDiscoveryEndpointConfiguration"/>
</discoveryClientSettings>
</standardEndpoint>
</dynamicEndpoint>
<discoveryEndpoint>
<standardEndpoint name="managedDiscoveryEndpointConfiguration" discoveryVersion="WSDiscovery11" discoveryMode="Managed"/>
</discoveryEndpoint>
</standardEndpoints>
これは、検出サービスに何が送信されているかを示すフィドラーの図です。([ http://tempuri] 名前空間に注意してください):
私のシナリオが可能かどうか、そしてどのようにアドバイスできますか?