xml - 无关的 wcf 主体 xml 命名空间声明

标签 xml wcf .net-3.5 namespaces

我使用 .Net 3.5 svcutil.exe 工具生成了一组 Web 服务代理对象。 SOAP 体元素有 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>

最佳答案

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

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

关于xml - 无关的 wcf 主体 xml 命名空间声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3304890/

相关文章:

c# - XML 反序列化单元测试

java - Jaxb:在同一个包中使用多个命名空间解码 xml

.net - 如何将FormattedText字符串转换为基于几何的对象?

c# - 对其中包含 NaN 的 Double 数组进行排序

c# - 编译器构建错误 : The call is ambiguous between the following methods or properties

java - xsd 类型定义可以引用 xml 文件本身吗?

xml - 使用 htmlText 嵌入 AS3 字体

wcf - Oracle ESB、WS-AT 和 WCF

c# - 将 WCF 服务发布到 Azure 而不向源代码管理添加代码?

wcf - RESTful WCF 安全/身份验证和 jQuery AJAX 调用