Как исправить проблемы с сериализацией XML в веб-сервисе ASMX - PullRequest
0 голосов
/ 18 апреля 2019

У нас есть веб-служба A asmx A, которая использует службу B WCF с нижеприведенной структурой DataContract.

[DataContract]
public class Animal
{
    [DataMember]
    string AnimalName { get; set; }

    [DataMember]
    Head[] head { get; set; }

}

[DataContract]
public class Person
{
    [DataMember]
    string PersonName { get; set; }

    [DataMember]
    Head[] head { get; set; }
}

[DataContract]
public class Head
{
    [DataMember]
    string Title { get; set; }
}

Мы получаем сообщение об ошибке при запуске веб-службы asmx A.

Типы 'Animal.Head' и 'Person.Head' используют имя типа XML, 'Head', из пространства имен 'http://tempuri.org/'. Используйте атрибуты XML, чтобы указать уникальное имя XML и / или пространство имен для тип.

Мы также пытались поместить другое пространство имен XMLElement в DataContract, но это не помогло.

    [XmlElement(Namespace = "urn:/A/Animal/")]
    [DataMember]
    Head[] head { get; set; }

Любая помощь в этом очень ценится.

1 Ответ

0 голосов
/ 19 апреля 2019

XmlElement используется для XmlSerializer, wcf по умолчанию использует DataContractSerializer для Сериализация и десериализация модели.

Если вы хотите использовать XmlSerializer, вы можете обратиться к https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/using-the-xmlserializer-class

DataContract также имеет свойство Namespace, которое может указывать пространство имен для вашей модели.

...