頭是通過訊息檢查器添加的,它在方法中實作了 IClientMessageInspector
public object BeforeSendRequest(ref Message request, IClientChannel channel)
{
var reqMsgProperty = new HttpRequestMessageProperty();
reqMsgProperty.Headers.Add("SOAPAction", "SendEcho");
reqMsgProperty.Headers.Add("Content-Type", "text/xml;charset=UTF-8");
request.Properties[HttpRequestMessageProperty.Name] = reqMsgProperty;
//...
return null;
}
但它仍然回傳這個奇怪的訊息:
訊息上指定的 SOAP 操作“SendEcho”與 HttpRequestMessageProperty 上指定的操作“SendEcho”不匹配。
是否有可能應該以其他方式添加此標題,以便它不會像字串一樣將雙引號括起來?如果是,那么如何?
uj5u.com熱心網友回復:
SOAPAction HTTP 標頭是 SOAP 1.1 通信所必需的,但 SOAP 1.2 通信不需要。WCF 遵循此規范,并且僅在使用 SOAP 1.1 時包括此標頭。
你用什么系結?BasicHttpBinding 使用 SOAP 1.1,但 WSHttpBinding 使用 SOAP 1.2 和 WS-Addressing 1.0。
您可以閱讀:
SOAPAction HTTP 標頭欄位規范和此執行緒
您還可以嘗試定義自己的自定義系結:
如何向每個 WCF 呼叫添加自定義 HTTP 標頭?
在現有 WCF SOAP 服務中添加 Http 標頭不起作用
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/372035.html
