Заголовок сообщения.CreateHeader добавляет xmlns=»» ко всем атрибутам при сериализации

#c# #asp.net-core #wcf #.net-core

#c# #asp.net-core #wcf #.net-core

Вопрос:

Я пытаюсь вызвать старый WCF.СЕТЕВОЙ сервис из нового проекта .NET Core 3.1. Я хочу добавить пользовательский заголовок к запросу SOAP, поэтому я создал IClientMessageInspector и в BeforeSendRequest я создаю и добавляю свой заголовок следующим образом : var header = MessageHeader.CreateHeader("StartRequest", "http://mynamespace", headerValue); request.Headers.Add(header);

Значение заголовка основано на экземпляре обычного класса c # с атрибутом [DataContract(Namespace = "")]

Все свойства класса оформлены [DataMember]

Моя проблема в том, что когда я просматриваю запрос в fiddler, я вижу, что все свойства получили xmlns=»» при сериализации. Это нарушает контракт SOAP, и мой запрос завершается ошибкой. Я пытался использовать DataContractSerializer, но не мог понять, как предотвратить генерацию xmlns if.

Кто-нибудь еще решил эту проблему?

Ответ №1:

Я решил это, заставив класс заголовка наследовать MessageHeader и перезаписать OnWriteHeaderContents .