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 来解决它。