System.InvalidOperationException. The specified type was not recognized error deserializing XML

224
07 октября 2019, 16:30

я пытаюсь сделать deserialize следующего XML используя C#:

<?xml version="1.0" encoding="utf-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
  <soapenv:Body>
    <out:response xmlns:out="http://AccountService" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <fault>
        <faultcode>0</faultcode>
        <faultstring>RESPONSE_OK</faultstring>
        <detail>Successful reply.</detail>
      </fault>
      <serviceResponse xsi:type="out:GetAccountInfoResponse">
        <accountInfo>
          <personId>123</personId>
          <account>
            <accountId>1</accountId>
            <accountNo>11</accountNo>
          </account>
          <account>
            <accountId>2</accountId>
            <accountNo>22</accountNo>
          </account>
        </accountInfo>
      </serviceResponse>
    </out:response>
  </soapenv:Body>
</soapenv:Envelope>

мой класс выглядит так:

[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://schemas.xmlsoap.org/soap/envelope/")]
    [System.Xml.Serialization.XmlRootAttribute(Namespace = "http://schemas.xmlsoap.org/soap/envelope/", IsNullable = false)]
    public partial class Envelope
    {
        private EnvelopeBody bodyField;
        public EnvelopeBody Body
        {
            get
            {
                return this.bodyField;
            }
            set
            {
                this.bodyField = value;
            }
        }
    }
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://schemas.xmlsoap.org/soap/envelope/")]
    public partial class EnvelopeBody
    {
        private response responseField;
        [System.Xml.Serialization.XmlElementAttribute(Namespace = "http://AccountService")]
        public response response
        {
            get
            {
                return this.responseField;
            }
            set
            {
                this.responseField = value;
            }
        }
    }
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://AccountService")]
    [System.Xml.Serialization.XmlRootAttribute(Namespace = "http://AccountService", IsNullable = false)]
    public partial class response
    {
        private fault faultField;
        private serviceResponse serviceResponseField;
        [System.Xml.Serialization.XmlElementAttribute(Namespace = "")]
        public fault fault
        {
            get
            {
                return this.faultField;
            }
            set
            {
                this.faultField = value;
            }
        }
        [System.Xml.Serialization.XmlElementAttribute(Namespace = "")]
        public serviceResponse serviceResponse
        {
            get
            {
                return this.serviceResponseField;
            }
            set
            {
                this.serviceResponseField = value;
            }
        }
    }
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
    [System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)]
    public partial class fault
    {
        private byte faultcodeField;
        private string faultstringField;
        private string detailField;
        /// <remarks/>
        public byte faultcode
        {
            get
            {
                return this.faultcodeField;
            }
            set
            {
                this.faultcodeField = value;
            }
        }
        public string faultstring
        {
            get
            {
                return this.faultstringField;
            }
            set
            {
                this.faultstringField = value;
            }
        }
        public string detail
        {
            get
            {
                return this.detailField;
            }
            set
            {
                this.detailField = value;
            }
        }
    }
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
    [System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)]
    public partial class serviceResponse
    {
        private serviceResponseAccountInfo accountInfoField;
        public serviceResponseAccountInfo accountInfo
        {
            get
            {
                return this.accountInfoField;
            }
            set
            {
                this.accountInfoField = value;
            }
        }
    }
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
    public partial class serviceResponseAccountInfo
    {
        private byte personIdField;
        private serviceResponseAccountInfoAccount[] accountField;
        /// <remarks/>
        public byte personId
        {
            get
            {
                return this.personIdField;
            }
            set
            {
                this.personIdField = value;
            }
        }
        [System.Xml.Serialization.XmlElementAttribute("account")]
        public serviceResponseAccountInfoAccount[] account
        {
            get
            {
                return this.accountField;
            }
            set
            {
                this.accountField = value;
            }
        }
    }
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
    public partial class serviceResponseAccountInfoAccount
    {
        private byte accountIdField;
        private byte accountNoField;
        public byte accountId
        {
            get
            {
                return this.accountIdField;
            }
            set
            {
                this.accountIdField = value;
            }
        }
        public byte accountNo
        {
            get
            {
                return this.accountNoField;
            }
            set
            {
                this.accountNoField = value;
            }
        }
    }
}

в процессе следует такая ошибка: The specified type was not recognized: name='GetAccountInfoResponse'. Когда я добавляю

[System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://AccountService",TypeName = "GetAccountInfoResponse")]

то accountInfo null

READ ALSO
Меры безопасности на web api сервисе

Меры безопасности на web api сервисе

Необходимо сделать небольшой web api сервис, служащий для сохранения отчётов, принятых с клиента (Android приложение)Отчёты присылаются в простой...

155
fatal error encountered during command execution (mysql+c#)

fatal error encountered during command execution (mysql+c#)

Подскажите пожалуйста, где у меня ошибка в коде(ругается на cmdExecuteNonQuery())

217
Расшифрвока по приватному ключу / Аналог JSEncrypt для C#

Расшифрвока по приватному ключу / Аналог JSEncrypt для C#

Вынужден переводить кусок кода с JS на C#, и наткнулся там на такой вот момент:

140
WinForms и Wpf Файлы вложенные в файл окна

WinForms и Wpf Файлы вложенные в файл окна

Если вы посмотрите на файл формы или файл окна (winforms в WFP) там вы можете увидеть, что файл содержит вложенные файлыВозможно ли сделать что-то...

167