私は現在、自分の管理外にある Java Web サービス用の WCF クライアントを作成しています。WCF は WSA To ヘッダーにエンドポイント アドレスを設定しているようですが、この Web サービスには別の値が必要です。
現在、次のように値を手動で設定しようとしています。
var binding = new CustomBinding();
binding.Elements.Add(GetSecurityElement());
binding.Elements.Add
(
new TextMessageEncodingBindingElement
(
MessageVersion.Soap11WSAddressing10,
Encoding.UTF8
)
);
binding.Elements.Add(new HttpsTransportBindingElement());
var endpoint = new EndpointAddress
(
new Uri("endpoint address"),
new DnsEndpointIdentity("endpoint identity"),
new AddressHeaderCollection()
);
var client = new Client(binding, endpoint);
client.Open();
using (new OperationContextScope(client.InnerChannel))
{
OperationContext.Current.OutgoingMessageHeaders.To = new Uri("some other address");
OperationContext.Current.OutgoingMessageHeaders.MessageId = new UniqueId("message id");
var response = client.doSomething();
}
Fiddler を使用して生成および送信されたリクエストを調べると、MessageID ヘッダーがデフォルトの urn:uuid:[some uuid] ではなく「メッセージ ID」に正常に設定されていることがわかりますが、To ヘッダーはまだ「 「他のアドレス」ではなく、「エンドポイント アドレス」です。
ヘッダー値を上書きする他の方法はありますか?