CoreWCF服务如何解析无命名空间的SOAP Header标签?
解决CoreWCF解析无命名空间SOAP头的问题
你遇到的问题根源在于:默认情况下[MessageHeader]标记的属性会关联到服务的默认命名空间,而请求里的Tag1、Tag2没有命名空间,导致解析不匹配。用[XmlElement]特性是错误的——它是用于控制消息体元素的序列化规则,不适用于消息头,所以才会触发WSDL生成错误。
正确的解决方式是直接给[MessageHeader]特性指定空命名空间:
[MessageContract] public class Class1 { // 指定Namespace为空字符串,匹配无命名空间的Tag1 [MessageHeader(Namespace = "")] public string Tag1 { get; set; } // 同样给Tag2指定空命名空间 [MessageHeader(Namespace = "")] public string Tag2 { get; set; } // 消息体部分的声明示例 [MessageBodyMember] public YourBodyType BodyContent { get; set; } }
这样修改后,CoreWCF会把这两个属性映射到无命名空间的SOAP头标签上,既能正确解析请求里的Tag1和Tag2值,也不会再出现WSDL生成错误。因为MessageHeader的Namespace参数是专门用来指定头元素命名空间的,完全符合SOAP规范和CoreWCF的序列化规则。
内容的提问来源于stack exchange,提问作者th1rdey3
相关产品推荐
相关产品推荐

