如何在SOAP标头中声明名称空间前缀

时间:2018-08-04 12:50:13

标签: c# soap header namespaces

我正在使用以下代码将标头添加到soap标头中。

using (new OperationContextScope(client.InnerChannel))
{
    OperationContext.Current.OutgoingMessageHeaders.Add(
        MessageHeader.CreateHeader("ns:To", "", "http://###.com"));                                
}

但是我遇到了undeclared namespace prefix ns错误,我需要在名称空间中添加xmlns:ns="http://www.w3.org/2005/08/addressing"

所以我的问题是如何向其中添加名称空间前缀

<s:Envelope>
    <s:Header>
        <ns:To>##</ns:To>
    </s:Header>
</s:Envelope>

收件人

<s:Envelope>
    <s:Header xmlns:ns="http://www.w3.org/2005/08/addressing">
        <ns:To>##</ns:To>
    </s:Header>
</s:Envelope>

1 个答案:

答案 0 :(得分:0)

尝试一下:

String oasisWsSecNS = "http://www.w3.org/2005/08/addressing";
XmlDocument document = new XmlDocument();
     
XmlElement child = document.CreateElement("To", oasisWsSecNS);
child.AppendChild(document.CreateTextNode("[value]"));
element.AppendChild(child);
            
context.OutgoingMessageHeaders.Add(MessageHeader.CreateHeader("Header", oasisWsSecNS, document.DocumentElement));