问题一

XML序列化与RESTful WCF Data Contract不能匹配,无法传递类的值。

现象:

给类加上[Serializable]Attribute,可以成功序列化,但是WCF Service不能识别。发现XML序列化与WCF Data Contract中成员的顺序必须相同。

解决方案:

1.类的头部清空WCF Data Contract的默认命名空间(见代码)。

2.所有元素加上XML序列化和WCF DataMember的Order(见代码),包括被调用的类。

using System;
using System.Collections.Generic;
using System.Runtime.Serialization;
using System.Xml.Serialization; namespace MySchool.BLL.Model.Common.User
{
[Serializable]
[DataContract(Namespace = "")]
public sealed class User
{
[DataMember(Order = )]
[XmlElement(Order = )]
public int id { get; set; } [DataMember(Order = )]
[XmlElement(Order = )]
public string userName { get; set; } [DataMember(Order = )]
[XmlElement(Order = )]
public string nickName { get; set; } //...... private Profile m_profile = null;
[DataMember(Order = )]
[XmlElement(Order = )]
public Profile Profile
{
get { return m_profile; }
set { m_profile = value; }
}
} [Serializable]
[DataContract(Namespace="")]
public sealed class Profile
{
[DataMember(Order = )]
[XmlElement(Order = )]
public int id { get; set; } [DataMember(Order = )]
[XmlElement(Order = )]
public int nation { get; set; } [DataMember(Order = )]
[XmlElement(Order = )]
public int gender { get; set; } //...
}
}

问题二

遇上List类型,WCF Service又不能识别。

现象:

XML序列化的对象,Service无法识别。

解决方案:
给[XmlElement]Attribute加上List的完整Type(见代码)。

        [DataMember(Order = )]
[XmlElement(Order = , Type = typeof(List<SchoolGradeClass>))]
public List<SchoolGradeClass> SchoolGradeClassList { get; set; }

面对上面这些问题,当Google未果的时候,该怎么办呢?经验和知识是你的救命稻草。技术是一个不断发展的事物,要求每一个技术人员终身学习的职业,学习应该成为程序员血液中的一份子!与各位技术战线的兄弟共勉。

XML序列化与REST WCF Data Contract匹配时遇到的2个问题的更多相关文章

  1. 谈谈WCF中的Data Contract(3):WCF Data Contract对Collection & Dictionary的支持

    谈谈WCF中的Data Contract(3):WCF Data Contract对Collection & Dictionary的支持 在本篇文章上一部分Order Processing的例 ...

  2. 再说WCF Data Contract KnownTypeAttribute

    WCF 中的序列化是用DataContractSerializer,所有被[DataContract]和[DataMemeber]标记的类和属性会被DataContractSerializer序列化. ...

  3. .NET中XML序列化和反序列化常用类和用来控制XML序列化的属性总结(XmlSerializer,XmlTypeAttribute,XmlElementAttribute,XmlAttributeAttribute,XmlArrayAttribute...)

    序列化和反序列化是指什么? 序列化(seriallization): 将对象转化为便于传输的数据格式, 常见的序列化格式:二进制格式,字节数组,json字符串,xml字符串.反序列化(deserial ...

  4. WCF技术剖析之十二:数据契约(Data Contract)和数据契约序列化器(DataContractSerializer)

    原文:WCF技术剖析之十二:数据契约(Data Contract)和数据契约序列化器(DataContractSerializer) [爱心链接:拯救一个25岁身患急性白血病的女孩[内有苏州电视台经济 ...

  5. C# UTF8的BOM导致XML序列化与反序列化报错:Data at the root level is invalid. Line 1, position 1.

    最近在写一个xml序列化及反序列化实现时碰到个问题,大致类似下面的代码: class Program { static void Main1(string[] args) { var test = n ...

  6. [.net 面向对象程序设计进阶] (11) 序列化(Serialization)(三) 通过接口 IXmlSerializable 实现XML序列化 及 通用XML类

    [.net 面向对象程序设计进阶] (11) 序列化(Serialization)(三) 通过接口 IXmlSerializable 实现XML序列化 及 通用XML类 本节导读:本节主要介绍通过序列 ...

  7. 【ASP.NET Web API教程】6.2 ASP.NET Web API中的JSON和XML序列化

    谨以此文感谢关注此系列文章的园友!前段时间本以为此系列文章已没多少人关注,而不打算继续下去了.因为文章贴出来之后,看的人似乎不多,也很少有人对这些文章发表评论,而且几乎无人给予“推荐”.但前几天有人询 ...

  8. Type 'System.IO.FileStream' with data contract name 'FileStream:http://schemas.datacontract.org/2004/07/System.IO' is not expected.

    今天在WCF项目里使用DataContract序列化接口参数的时候,报了这个错,错误详细信息如下: System.ServiceModel.CommunicationException: There ...

  9. ASP.NET Web API中的JSON和XML序列化

    ASP.NET Web API中的JSON和XML序列化 前言 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnblogs.com/aehyok ...

随机推荐

  1. jzoj5894

    先前綴和一發,問題表示求[0-l2][0-r2]滿足條件的數的個數 假設可以把某一個數拆分成[前面任意個數][00-0-11-1(個數相同)]的區間 那麼問題會簡單的多,因為任意一個a位的整數分別xo ...

  2. 初识storm

    storm是Twitter开发的一个开源的分布式实时计算系统,可以简单可靠的处理大量的数据流.storm有很多的应用场景,如实时分析,在线机器学习,持续计算,分布式RPC,ETL等等.storm支持水 ...

  3. ifconfig-dropped

    drop的包是因为网卡的buffer满了 查看当前网卡的buffer size情况 ethtool -g eth0 Ring parameters for eth0: Pre-set maximums ...

  4. Linux基本命令学习与使用

    1.chgrp,chown,chmod(-R递归修改文件夹下的文件) chgrp:修改文件属于哪个组 chown:修改文件属于哪个用户 chmod:修改文件权限r=4,w=2,x=1 chmod 4+ ...

  5. Swift 里字符串(八)UnicodeScalarView

    即以 Unicode Scarlar 的方式来查看字符串. /// let flag = "

  6. performSelector 的缺点

    在内存管理方面容易有缺失.无法确定将要执行的选择子具体是什么,所以 ARC 无法插入适当的内存管理方法 选择子的返回类型只能是 id,最多有两个参数. 所以尽量避免使用这个东西. 下面来自苹果的文档 ...

  7. #阿里云#云服务器部署可道云(KodExplorer)

    前言:在做一些项目的时候,经常有一些文档交流,修改之后的文档在QQ或微信上发来发去,还要下载,很是不爽,有一个挺有用的东西叫做KodExplorer可道云. kodexplorer可道云是目前国内有代 ...

  8. sql子查询在insert、update、delete中的应用

    子查询可以应用在INSERT.UPDATE以及DELETE等语句中,合理的使用子查询将能够简化功能的实现并且极大的提高SQL语句执行的效率 用到的表: CREATE TABLE `t_readerfa ...

  9. Form表单如何可以传递多个值传递List数组对象到后台的解决办法

    举例说明: 后台有一个对象 User ,结构如下: 后台有一个对象 User ,结构如下: public class User{ private String username; private Li ...

  10. html的css选择器

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...