1
以下是這種情況:我試圖向中間路由器服務發送SOAP消息。該服務只關心我的SOAP消息標題,並使用WS-AddressingTo
標題轉發我的消息。設置MessageHeaders.To字段被覆蓋
我需要基本POST像下面路由器服務的請求:
POST http://gatewayRouter/routingService HTTP/1.1
Content-Type: application/soap+xml; charset=utf-8
Host: gatewayRouter
Content-Length: 8786
Expect: 100-continue
Connection: Keep-Alive
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope"
xmlns:a="http://www.w3.org/2005/08/addressing">
<s:Header> <!-- ... -->
<a:To s:mustUnderstand="1">http://actualDestination</a:To>
</s:Header> <!-- ... body, /envelope, etc --->
我目前能夠通過使用Custom Behaviors沒有問題來設置路由服務需要其他自定義頁眉:
public object BeforeSendRequest(ref Message request, IClientChannel channel)
{
MessageBuffer buffer = request.CreateBufferedCopy(Int32.MaxValue);
request = buffer.CreateMessage();
request.Headers.To = new Uri("http://actualDestination");
request.Headers.Add(new CustomHeader());
return null;
}
上面的代碼工作正常,我CustomHeader添加到郵件,但無法修改傳出的WS-Addressing To
場 - 它總是被重新設置爲相同的URI HTTP POST值。事實上,我使用.NET Reflector來調試這個字段的設置 - 當然,它正在被覆蓋(screenshot of the stack trace and breakpoint)。
有沒有其他方法可以讓我更改To
SOAP標頭,但我不能正確理解?