爲了從WCF調用需要WS-Addressing的服務,您必須將客戶端端點配置爲使用支持它的綁定,例如WSHttpBinding。
然後,您可以通過OperationContext.OutgoingMessageHeaders屬性設置在你的客戶端代碼wsa:ReplyTo
頭到特定網址:
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>
我發現它比你的要複雜得多的解決方案...您的解決方案是好的,方便,乾淨...謝謝! – 2012-02-06 12:57:45
我很高興我可以幫助:) – 2012-02-06 13:47:36
我使用自定義綁定,所以必須設置 - > –
robnick
2017-01-05 01:17:24