C# 如何删除<;a:To s:mustUnderstand=";1“&燃气轮机;来自SOAP请求
我使用的是第三方双工服务(假设实现了回调契约)。下面是配置部分。服务抛出异常,表示无法理解请求XML“a:To mustUnderstand=“1”中的标记C# 如何删除<;a:To s:mustUnderstand=";1“&燃气轮机;来自SOAP请求,c#,xml,soap,wcf-binding,soap-client,C#,Xml,Soap,Wcf Binding,Soap Client,我使用的是第三方双工服务(假设实现了回调契约)。下面是配置部分。服务抛出异常,表示无法理解请求XML“a:To mustUnderstand=“1”中的标记 请求XML: <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:u="http://docs.oasis-open.org/wss/2004/01/
请求XML:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<s:Header>
<a:MessageID>urn:uuid:76901ce5-0bab-42e2-ac76-18eddf367d25</a:MessageID>
<a:To s:mustUnderstand="1">http://vmsvalservice-uat.rpdata.com/vms-valuation/soap/soapws</a:To>
<o:Security s:mustUnderstand="1" xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
urn:uuid:76901ce5-0bab-42e2-ac76-18eddf367d25
http://vmsvalservice-uat.rpdata.com/vms-valuation/soap/soapws
我尝试了两种方法来修复它
非常感谢您的任何建议。我验证了xml,发现架构需要一个。您应该按照以下方式验证整个xml:从VS菜单:项目:添加新项:xml文件。将xml粘贴到窗口中,确保只有一个标识行。任何错误都将显示在错误列表中,就像编译器一样错误
<?xml version="1.0" encoding="utf-8" ?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<s:Header>
<a:MessageID>urn:uuid:76901ce5-0bab-42e2-ac76-18eddf367d25</a:MessageID>
<a:To s:mustUnderstand="1">http://vmsvalservice-uat.rpdata.com/vms-valuation/soap/soapws</a:To>
<o:Security s:mustUnderstand="1" xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
</o:Security>
</s:Header>
<s:Body>
</s:Body>
</s:Envelope>
urn:uuid:76901ce5-0bab-42e2-ac76-18eddf367d25
http://vmsvalservice-uat.rpdata.com/vms-valuation/soap/soapws
通过显式删除给定标题并随后重新插入,实际解决了此问题:
newHeader = MessageHeader.CreateHeader("To", "http://www.w3.org/2005/08/addressing", m.Headers.To.ToString(), false);
index = m.Headers.FindHeader("To", Definitions.WSA_NAMESPACE_FULL);
m.Headers.RemoveAt(index);
m.Headers.Insert(index, newHeader);
newHeader = MessageHeader.CreateHeader("To", "http://www.w3.org/2005/08/addressing", m.Headers.To.ToString(), false);
index = m.Headers.FindHeader("To", Definitions.WSA_NAMESPACE_FULL);
m.Headers.RemoveAt(index);
m.Headers.Insert(index, newHeader);