Чтобы вызвать службу, требующую WS-Addressing из WCF, вам необходимо настроить конечную точку клиента для использования привязки, которая ее поддерживает, например WSHttpBinding .
Затем можно установить заголовок wsa:ReplyTo
для определенного URL-адреса в коде клиента через свойство OperationContext.OutgoingMessageHeaders :
using (new OperationContextScope((IContextChannel)channel))
{
OperationContext.Current.OutgoingMessageHeaders.ReplyTo =
new EndpointAddress("http://client/callback");
channel.DoSomething();
}
В этом примереустановка заголовка wsa:ReplyTo
для известного URL, где клиентский канал прослушивает входящие сообщения обратного вызова от службы.
В качестве альтернативы, , если служба поддерживает его , вы можете использовать WSDualHttpBinding , который имеет встроенную поддержку дуплексной связи через WS-Addressing.В этом случае вы должны установить адрес обратного вызова через свойство WSDualHttpBinding.ClientBaseAddress :
<system.serviceModel>
<bindings>
<wsDualHttpBinding>
<binding clientBaseAddress="http://client/callback" />
</wsDualHttpBinding>
</bindings>
<client>
<endpoint address="http://server/service"
binding="wsDualHttpBinding"
contract="Namespace.Service" />
</client>
</system.serviceModel>