[英]Combining WCF Routing and Discovery
我正在嘗試將WCF路由服務與發現結合起來,但似乎它們不能一起使用。 這是我的情況:
客戶端的請求來自路由服務。 我希望路由服務使用發現來找到正確的端點,並將傳入消息發送到找到的端點。 但是,路由服務將[ 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]命名空間):
如果我的方案可行,有人可以建議我嗎?
我找到了解決方案。 我必須在DiscoveryClientSettings元素中指定搜索條件。 在這里,我可以明確地說出我要尋找的類型。 我的standardEndpoints配置現在如下所示:
<standardEndpoints>
<dynamicEndpoint>
<standardEndpoint name="dynamicEndpointConfiguration">
<discoveryClientSettings>
<endpoint address="http://server/DiscoveryProxy.svc" behaviorConfiguration="DiscoveryEndpointBehavior" binding="wsHttpBinding" bindingConfiguration="NoSecurityBinding" name="DiscoveryEndpoint" kind="discoveryEndpoint" endpointConfiguration="managedDiscoveryEndpointConfiguration" />
<findCriteria>
<types>
<add name="IGreetingService" namespace="urn:poc:igreetingservice:v1"/>
</types>
</findCriteria>
</discoveryClientSettings>
</standardEndpoint>
</dynamicEndpoint>
<discoveryEndpoint>
<standardEndpoint name="managedDiscoveryEndpointConfiguration" discoveryVersion="WSDiscovery11" discoveryMode="Managed"/>
</discoveryEndpoint>
</standardEndpoints>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.