#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 .