【问题标题】:How to serialize complex model to xml format wcf如何将复杂模型序列化为 xml 格式 wcf
【发布时间】:2017-08-18 15:50:42
【问题描述】:

我正在开发一个 wcf 应用程序,它将 c# 请求模型作为输入,并在从数据库中填充数据后返回复杂的响应 c# 模型。我正在使用 SOAP UI 客户端工具来测试我的服务。

之前我用 XmlSerializerFormat 属性修饰了我的合同,在提交请求后,我能够在 SOAP UI 工具的 Result 选项卡中获得响应。下面是它的代码sn-p:

  [ServiceContract]
  [XmlSerializerFormat]
public interface IService1
{
    [OperationContract]
    Employee GetData(Employee value);
}



  [DataContract]
    public class Employee
    {
        [DataMember]
        public int Id { get; set; }

         [DataMember]
        public string Name { get; set; }

         public string Address { get; set; }
    }

但现在由于某些原因,我从合同中删除了 XmlSerializerFormat 属性,我希望默认序列化程序来处理它。但是当我从客户端提交请求时,我的响应模型正在填充结果,但 SOAP UI 的响应选项卡显示空响应。

在响应模型填充期间,当我从响应模型中删除某些属性时,我能够在 SOAP UI 工具的响应选项卡中看到结果。

在序列化我的模型的某些属性时,默认序列化程序会面临一些问题。除了 XmlSerializerFormat 之外的任何其他属性?

请让我知道我缺少的地方,或者是否有 XmlSerializerFormat 属性的替代品。

提前感谢

【问题讨论】:

  • 你也想保存来自soapui的响应xml吗?

标签: wcf soapui wcf-data-services wcf-ria-services wcf-binding


【解决方案1】:

尝试将 DataContract 属性添加到类级别的 Employee 中,并将 DataMember 属性添加到您想要序列化的属性中。如果它自己有复杂的属性类型,它们也可能需要进行类似的装饰。 WCF 中的默认序列化程序是 DataContract 序列化程序,仅供参考。

【讨论】:

  • Dogu Arslan :它已经在那里了。我在 Employee 模型中有一个复杂数组类型的属性,我正在从 DB 填充该数组。在将 NULL 显式传递给该属性时,我能够在 SOAP 客户端的响应选项卡中看到响应。否则不是。我还从设置中增加了响应消息的大小,但不起作用。
猜你喜欢
  • 1970-01-01
  • 2019-09-07
  • 2019-06-05
  • 1970-01-01
  • 2020-11-18
  • 1970-01-01
  • 2013-04-03
  • 1970-01-01
  • 2013-10-09
相关资源
最近更新 更多