MessageHeader.CreateHeader 正在向序列化中的所有属性添加 xmlns=""
MessageHeader.CreateHeader is adding xmlns="" to all attributes in serialization
我正在尝试从新的 .NET Core 3.1 项目调用旧的 WCF .NET 服务。我想向 SOAP 请求添加自定义 header,因此我创建了一个 IClientMessageInspector 并在 BeforeSendRequest 上创建并添加了我的 header,如下所示:
var header = MessageHeader.CreateHeader("StartRequest", "http://mynamespace", headerValue); request.Headers.Add(header);
header 值基于具有属性 [DataContract(Namespace = "")]
的常规 c# class 实例
class 的所有属性都用 [DataMember]
修饰
我的问题是,当我在 fiddler 中查看请求时,我发现所有属性在序列化时都收到了 xmlns=""。这违反了 SOAP 合同,我的请求失败了。我尝试使用 DataContractSerializer 但无法弄清楚如何防止生成 xmlns。
有没有其他人解决了这个问题?
我通过让 header class 继承 MessageHeader 并覆盖 OnWriteHeaderContents 来解决它。
我正在尝试从新的 .NET Core 3.1 项目调用旧的 WCF .NET 服务。我想向 SOAP 请求添加自定义 header,因此我创建了一个 IClientMessageInspector 并在 BeforeSendRequest 上创建并添加了我的 header,如下所示:
var header = MessageHeader.CreateHeader("StartRequest", "http://mynamespace", headerValue); request.Headers.Add(header);
header 值基于具有属性 [DataContract(Namespace = "")]
class 的所有属性都用 [DataMember]
我的问题是,当我在 fiddler 中查看请求时,我发现所有属性在序列化时都收到了 xmlns=""。这违反了 SOAP 合同,我的请求失败了。我尝试使用 DataContractSerializer 但无法弄清楚如何防止生成 xmlns。
有没有其他人解决了这个问题?
我通过让 header class 继承 MessageHeader 并覆盖 OnWriteHeaderContents 来解决它。