WCFからWS-Addressingを必要とするサービスを呼び出すには、 WSHttpBindingなど、それをサポートするバインディングを使用するようにクライアントエンドポイントを構成する必要があります。
次に、 OperationContext.OutgoingMessageHeadersプロパティwsa:ReplyTo
を使用して、クライアントコードの特定のURLにヘッダーを設定できます。
using (new OperationContextScope((IContextChannel)channel))
{
OperationContext.Current.OutgoingMessageHeaders.ReplyTo =
new EndpointAddress("http://client/callback");
channel.DoSomething();
}
この例では、wsa:ReplyTo
ヘッダーを既知のURLに設定しており、クライアントチャネルはサービスからの着信コールバックメッセージをリッスンします。
または、サービスがサポートしている場合は、 WS-Addressingを介した二重通信のサポートが組み込まれているWSDualHttpBindingを使用できます。この場合、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>