如何修复ASMX Web服务中的XML序列化问题

问题描述 投票:0回答:1

我们有一个asmx Web服务A,它使用具有以下DataContract结构的WCF服务B.

[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 Web服务A时,我们收到以下错误

类型'Animal.Head'和'Person.Head'都使用来自命名空间'http://tempuri.org/'的XML类型名称'Head'。使用XML属性为类型指定唯一的XML名称和/或命名空间。

我们还尝试在DataContract中放置一个不同的XMLElement命名空间但没有帮助。

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

对此有任何帮助非常感谢。

c# wcf xml-serialization asmx
1个回答
0
投票

XmlElement用于XmlSerializer,wcf默认使用DataContractSerializer来序列化和反序列化模型。

如果你想使用XmlSerializer,你可以参考https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/using-the-xmlserializer-class

DataContract还有一个Namespace属性,可以为模型指定命名空间。

© www.soinside.com 2019 - 2024. All rights reserved.