У меня проблемы с использованием службы маршрутизации .Net 4.0 при подключении к службе с помощью обратных вызовов.Насколько я понимаю, и привязка и обратные вызовы поддерживаются службой маршрутизации.Сервис и клиент работают нормально.
То, что я сделал, взяло образцы 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, за которым следовал мой след.Может кто-нибудь дать подсказку в правильном направлении или исправить меня, если мои предположения относительно возможностей обратного вызова RoutingService неверны.
TIA & Cheers Dominik