【问题标题】:how to prevent serializing datamember in wcf service如何防止在 wcf 服务中序列化数据成员
【发布时间】:2015-09-11 06:49:34
【问题描述】:

我有一个方法,它在 InsuredGeneralInfo 和 InsuredAddrInfo 中有一些成员,如 createdby、createddate 等,我不想序列化。我没有向它们添加 [datamember] 属性,但是当我使用 wcf 客户端对其进行测试时,我仍然在响应 xml 中看到它们。有什么原因吗?

这是接口中的声明

public class InsuredInfo
{
    public InsuredGeneralInfo insuredGeneralInfo { get; set; }
    public InsuredAddressInfo insuredAddrInfo { get; set; }
}

[DataContract]
public class InsuredGeneralInfo
{
    [DataMember]
    public string FirstName { get; set; }
    [DataMember]
    public string MiddleInitial { get; set; }
    [DataMember]
    public string LastName { get; set; }
    [DataMember]
    public string Gender { get; set; }
    [DataMember]
    public string DOB { get; set; }
    [DataMember]
    public string SSN { get; set; }

    public string CreatedBy { get; set; }
    public DateTime CreatedDate { get; set; }
    public string LastModifiedBy { get; set; }
    public DateTime LastModifiedDate { get; set; }
}

输出:

<insuredGeneralInfo>
      <FirstName>test</FirstName>
      <MiddleInitial>t</MiddleInitial>
      <LastName>test</LastName>
      <Gender>male</Gender>
      <DOB>12-25-1982</DOB>
      <SSN>123456789</SSN>
      <CreatedBy>ad</CreatedBy>
      <CreatedDate>2015-06-24T16:12:00</CreatedDate>
      <LastModifiedBy>ad</LastModifiedBy>
      <LastModifiedDate>2015-06-24T16:12:00</LastModifiedDate>
    </insuredGeneralInfo>

【问题讨论】:

  • 您正在执行哪些步骤来获取您发布的 XML?
  • 我正在从 WCF 客户端调用 WCF 服务并传递输入参数。
  • 不,我的意思是您使用什么工具来获得该输出。您发布的代码将其保存到数据库中,而不是生成 XML。
  • 尝试删除[DataContract]属性并添加[XmlIgnore]
  • @nimish 您发布的 xml 是从服务响应消息中获取的吗?你能发布整个消息吗?这是 REST 还是 SOAP 服务?

标签: c# entity-framework wcf


【解决方案1】:

使用 WCF,您可以选择使用 DataContract / Datamember 或仅使用公共属性。

如果您使用没有属性的公共属性,那么所有公共属性都将被序列化。如果您使用 DataContract / Datamember,那么只有带有 DataContract / Datamember 的字段才会被序列化。

在您的情况下,根类 InsuredInfo 未使用 DataContract / Datamember 标记,因此 WCF 序列化所有公共属性。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2023-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-19
  • 2013-07-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多