【问题标题】:How to fix XML serialization issues in ASMX web service如何修复 ASMX Web 服务中的 XML 序列化问题
【发布时间】:2019-09-08 23:25:14
【问题描述】:

我们有一个 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】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-18
    • 1970-01-01
    • 2011-03-05
    相关资源
    最近更新 更多