无关的wcf正文xml命名空间声明

无关的wcf正文xml命名空间声明,xml,wcf,.net-3.5,namespaces,Xml,Wcf,.net 3.5,Namespaces,我使用.Net 3.5 svcuti.exe工具生成了一组web服务代理对象。soap body元素有2个无关的xml名称空间别名声明。特别是架构和架构实例命名空间(,) 出于其他原因,我正在与之交互的服务存在一个bug,其中无法包含这些声明。我正在想办法把它们去掉。任何帮助都将不胜感激。soap消息看起来像这样 <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> ... <s:Bod

我使用.Net 3.5 svcuti.exe工具生成了一组web服务代理对象。soap body元素有2个无关的xml名称空间别名声明。特别是架构和架构实例命名空间(,)

出于其他原因,我正在与之交互的服务存在一个bug,其中无法包含这些声明。我正在想办法把它们去掉。任何帮助都将不胜感激。soap消息看起来像这样

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
    ...
    <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      ...
    </s:Body>
</s:Envelope>

...
...

我不认为有什么办法可以做到这一点,除了亲自编写SOAP消息。这些只是常见的XML模式名称空间,如果不使用它们的话,应该不会有什么坏处

我找到的解决方案是实现一个消息检查器。我创建了一个实现IClientMessageInspector的类。此类将有机会在消息通过线路发送之前修改消息,或者在消息脱离线路之后修改响应。然后创建另一个类IEndpointBehavior,用于注册自定义消息检查器。最后,我创建了一个扩展BehaviorExtensionElement的类,以允许在配置文件中指定自定义行为


使用此解决方案,我可以在将消息发送到服务器时修改消息,并删除有问题的xsi和xsd别名定义。

是的,我正在与服务提供商合作修复他们的代码,但我无法控制这一点。我正在考虑手工制作它,但我将失去所有的灵活性,生成的代码,和WCF的能力,做我讨厌做的事情。