简体   繁体   中英

WCF RoutingService not routing wsDualHttpBinding with callbacks

I´m having problems using the.Net 4.0 Routing Service connecting to a service using callbacks. To my understanding both binding and callbacks are supported by the Routing Service. Service and Client alone are operating fine.

What I did, was taking the MS WCF and WF Samples located here: http://www.microsoft.com/downloads/en/details.aspx?FamilyID=35ec8682-d5fd-4bc3-a51a-d8ad115a8792&displaylang=en

and changed the configuration to match the binding of my service. I can call operations via the routing service from the client to the service, only callbacks from service to the client are not received by the client.

The routing service is configured as follows, using a console application as a host

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>    

If I enabling ServiceModel tracing, I can see an ArgumentException deep in the WCF Stack, a trace I´havent followed so far.

Can anyone give a hint into the right direction, or correct me If my assumptions concerning the callback capabilities of the RoutingService are wrong.

TIA & Cheers Dominik

In case someone stumbles like I did, the problem was the contract on the router endpoint. RequestReplyRouter does not support callbacks but IDuplexSessionRouter does.

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

Regards Dominik

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM