2011-06-03 88 views
1

我使用.Net 4.0路由服務使用回調連接到服務時遇到問題。據我瞭解,路由服務支持綁定和回調。僅服務和客戶運營良好。WCF路由服務不使用回調路由wsDualHttpBinding

我做了什麼,正在採取設在這裏的MS WCF和WF樣品:http://www.microsoft.com/downloads/en/details.aspx?FamilyID=35ec8682-d5fd-4bc3-a51a-d8ad115a8792&displaylang=en

和更改配置,以配合我的服務的結合。我可以通過從客戶端到服務的路由服務調用操作,客戶端不會收到從服務到客戶端的回調。

路由服務被配置如下,使用一個控制檯應用程序作爲宿主

using (ServiceHost serviceHost = 
      new ServiceHost(typeof(RoutingService))) 
     { 
      serviceHost.Open(); 
      Console.ReadLine(); 
     } 
<system.serviceModel> 
<diagnostics> 
    <messageLogging logMalformedMessages="true" logMessagesAtServiceLevel="true" 
    logMessagesAtTransportLevel="true" /> 
</diagnostics> 
<services> 
    <!--ROUTING SERVICE --> 
    <service behaviorConfiguration="routingData" name="System.ServiceModel.Routing.RoutingService" > 
    <host> 
     <baseAddresses> 
     <add baseAddress="http://localhost:8000/routingservice/router"/> 
     </baseAddresses> 
    </host> 
    <endpoint address="" 
       binding="wsDualHttpBinding" 
       name="reqReplyEndpoint" 
       contract="System.ServiceModel.Routing.IRequestReplyRouter" 
       bindingConfiguration="UnSecureBinding"/> 
    <endpoint address="mex" 
       binding="mexHttpBinding" 
       contract="IMetadataExchange" /> 
    </service> 
</services> 
<behaviors> 
    <serviceBehaviors> 
    <behavior name="routingData"> 
     <serviceMetadata httpGetEnabled="True"/> 
     <serviceDebug includeExceptionDetailInFaults="true" /> 
     <routing filterTableName="routingTable1" /> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 
<bindings> 
    <wsDualHttpBinding> 
    <binding name="UnSecureBinding"> 
     <security mode="None" /> 
    </binding> 
    </wsDualHttpBinding> 
</bindings> 
<client> 
    <endpoint name="NotificationService" 
      address="http://localhost/CommServices/NotificationService.svc" 
      binding="wsDualHttpBinding" 
      bindingConfiguration="UnSecureBinding" 
      contract="*" /> 
</client> 
<!--ROUTING SECTION --> 
<routing> 
    <filters> 
    <filter name="MatchAllFilter1" filterType="MatchAll" /> 
    </filters> 
    <filterTables> 
    <filterTable name="routingTable1"> 
     <add filterName="MatchAllFilter1" endpointName="NotificationService" /> 
    </filterTable> 
    </filterTables>  

如果我使ServiceModel跟蹤,我可以看到一個ArgumentException深在WCF Stack中,至今爲止我追蹤了一下。

任何人都可以提示正確的方向,或糾正我如果我對有關RoutingService的回調能力的假設是錯誤的。

TIA &乾杯 多米尼克

+0

你是如何配置你的路由服務?不要指望人們會下載任何東西來理解你的問題。修改您的問題並添加路由服務的配置。 – 2011-06-05 18:45:53

+0

嗨拉迪斯拉夫和感謝您的評論,解開了這個問題。 – Dominik 2011-06-06 06:32:28

回答

3

,以防有人跌倒像我一樣,問題是在路由器端點的合同。 RequestReplyRouter不支持回調,但IDuplexSessionRouter可以。

<endpoint address="" 
       binding="wsDualHttpBinding" 
       name="reqReplyEndpoint" 
       contract="System.ServiceModel.Routing.IDuplexSessionRouter" 
       bindingConfiguration="UnSecureBinding"/> 

問候 多米尼克

+0

是的,那正是我期望的問題...... :) – 2011-06-06 08:15:27