Десериализация ответа SOAP не работает с локальным клиентским объектом - PullRequest
0 голосов
/ 09 сентября 2018

При попытке десериализации ответа SOAP произошла ошибка. Я не могу получить ответ в виде строки, я взял строку и сгенерировал класс c # из XML, однако, когда я вызываю

using (var httpClient = new HttpClient(handler))
        {
            var httpContent = new StringContent(xmlString, Encoding.UTF8, "text/xml");
            httpContent.Headers.Add("SOAPAction", Common.EPhytoNamespace);

            HttpResponseMessage message = httpClient.PostAsync(_settings.HubServiceUrl, httpContent).Result;
            envelope = message.Content.ReadAsAsync<HubServiceContracts.TrackingInfo.Envelope>().Result;
        }

Я получаю следующее исключение:

SerializationException: ошибка в строке 1, позиция 65. Ожидается элемент 'Envelope' из пространства имен 'http://schemas.datacontract.org/2004/07/eCert.Bll.HubServiceContracts.TrackingInfo'.. Обнаружен' Element 'с именем' Envelope ', пространство имен' http://schemas.xmlsoap.org/soap/envelope/'.

Это структура сгенерированных объектов c #:

[XmlRoot(ElementName = "Body", Namespace = "http://schemas.xmlsoap.org/soap/envelope/")]
public class Body
{
    [XmlElement(ElementName = "GetEnvelopeTrackingInfoResponse", Namespace = "http://ephyto.ippc.int/")]
    public GetEnvelopeTrackingInfoResponse GetEnvelopeTrackingInfoResponse { get; set; }
}

[Serializable]
[XmlRoot(ElementName = "Envelope", Namespace = "http://schemas.xmlsoap.org/soap/envelope/")]
public class Envelope
{
    [XmlElement(ElementName = "Body", Namespace = "http://schemas.xmlsoap.org/soap/envelope/")]
    public Body Body { get; set; }
    [XmlAttribute(AttributeName = "S", Namespace = "http://www.w3.org/2000/xmlns/")]
    public string S { get; set; }
}

Прошу вас помочь тому, что я делаю неправильно.

...