无关的wcf body xml名称空间声明

时间:2010-07-22 00:18:39

标签: xml wcf .net-3.5 namespaces

我使用.Net 3.5 svcutil.exe工具生成了一组Web服务代理对象。 soap body元素有2个无关的xml名称空间别名声明。特别是架构和架构实例名称空间(http://www.w3.org/2001/XMLSchemahttp://www.w3.org/2001/XMLSchema-instance)。

由于其他原因,我正在与之交互的服务存在一个错误,即无法包含这些声明。我正在试图找出如何删除它们。任何帮助,将不胜感激。 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>

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:0)

我认为没有办法做到这一点,没有自己手写SOAP消息。这些只是通常的XML模式命名空间,如果不使用它们,真的不应该受到伤害。