问题一

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. libevent源码剖析

    libevent是一个使用C语言编写的,轻量级的开源高性能网络库,使用者很多,研究者也很多.由于代码简洁,设计思想简明巧妙,因此很适合用来学习,提升自己C语言的能力. libevent有这样显著地几个 ...

  2. [JavaScript] js获取当前页面url网址信息

    在WEB开发中,时常会用到javascript来获取当前页面的url网址信息,在这里是我的一些获取url信息的小总结. 下面我们举例一个URL,然后获得它的各个组成部分:http://i.cnblog ...

  3. Python中的运算符与表达式

    你所编写的大多数语句(逻辑行)都包含了表达式(Expressions).一个表达式的简单例子便是 2+3.表达式可以拆分成运算符(Operators)与操作数(Operands).运算符(Operat ...

  4. 【NOIP2017】逛公园 最短路+DP

    诶,去年场上不会处理$0$的环,只拿了$60$有点可惜. 我们先不管边边权为$0$的边. 我们先跑一次最短路,令$dis[u]$表示从$1$至$u$的最短路的长度. 那么根据题目的要求,从起点走到$u ...

  5. hive算法报错..

    hive普通语句查询报错.. 查到以下设定项,,附加在语句前执行成功.. 但是有可能没有真正的执行.. 试到最后使用标红的三行附加在语法前执行成功 set hive.execution.engine= ...

  6. css网页布局 --- 左边固定,右边自适应

    div的布局统一如下: <body> <div class="wrap"> <div class="left"></d ...

  7. Chapter 3 Phenomenon——5

    I saw several things simultaneously. 我同时看见了几件事情. Nothing was moving in slow motion,the way it does i ...

  8. elasticsearch插件安装之--拼音插件

    /** * vm12下的centos7.2 * elasticsearch 5.2.2 */ 有时在淘宝搜索商品的时候, 会发现使用汉字, 拼音, 或者拼音混合汉字都会出来想要的搜索结果, 今天找了一 ...

  9. C#的SubString(int start,int end);

    C#的SubString(); 例子: string str = "i am a girl"; string temp = str.Substring(2,2);//从索引2开始, ...

  10. java.io.Serializable的作用

    Serializable,之前一直有使用,默认的实体类就会实现Serializable接口,对具体原因一直不是很了解,同时如果没有实现序列化,同样没什么影响,什么时候应该进行序列化操作呢?今天查了下资 ...