我有一个奇怪的问题,在将XMLElement发送到WCF服务时,似乎无法正确获取名称空间。
XMLElement来自XMLDocument,它从磁盘加载,如下所示:
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(new XmlTextReader("C:\\Temp\\Test.xml"));
XML包含以下命名空间:
<Root ID="0bb2cc41-57d0-4fc7-93e9-4cbddc8f216b" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:somenamespace:2009.07.03">
但是当我像这样使用WCF服务时
vsLightKlient.SendRequest(xmlDoc.DocumentElement);
我可以看到WCF服务只接收
<Root ID="8aa6d535-f448-47b6-b982-c4b9b50556aa" xmlns="urn:somenamespace:2009.07.03>
这是一个问题,因为我正在使用额外的命名空间对原始XMLDocument
进行签名。删除额外的名称空间后,签名与我发送的名称不匹配,验证失败
如何让xmlDoc.DocumentElement
实际发送所有命名空间?
答案 0 :(得分:0)
使用这个提示:
https://stackoverflow.com/a/12337548/1005134
我能够强制WCF客户端接受XElement。当我收到我发回的有效负载时,我可以看到我的所有命名空间都存在。不知道DocumentElement的错误在哪里。
最佳,
安德烈亚斯