XML序列化与REST WCF Data Contract匹配时遇到的2个问题
问题一:
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个问题的更多相关文章
- 谈谈WCF中的Data Contract(3):WCF Data Contract对Collection & Dictionary的支持
谈谈WCF中的Data Contract(3):WCF Data Contract对Collection & Dictionary的支持 在本篇文章上一部分Order Processing的例 ...
- 再说WCF Data Contract KnownTypeAttribute
WCF 中的序列化是用DataContractSerializer,所有被[DataContract]和[DataMemeber]标记的类和属性会被DataContractSerializer序列化. ...
- .NET中XML序列化和反序列化常用类和用来控制XML序列化的属性总结(XmlSerializer,XmlTypeAttribute,XmlElementAttribute,XmlAttributeAttribute,XmlArrayAttribute...)
序列化和反序列化是指什么? 序列化(seriallization): 将对象转化为便于传输的数据格式, 常见的序列化格式:二进制格式,字节数组,json字符串,xml字符串.反序列化(deserial ...
- WCF技术剖析之十二:数据契约(Data Contract)和数据契约序列化器(DataContractSerializer)
原文:WCF技术剖析之十二:数据契约(Data Contract)和数据契约序列化器(DataContractSerializer) [爱心链接:拯救一个25岁身患急性白血病的女孩[内有苏州电视台经济 ...
- 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 ...
- [.net 面向对象程序设计进阶] (11) 序列化(Serialization)(三) 通过接口 IXmlSerializable 实现XML序列化 及 通用XML类
[.net 面向对象程序设计进阶] (11) 序列化(Serialization)(三) 通过接口 IXmlSerializable 实现XML序列化 及 通用XML类 本节导读:本节主要介绍通过序列 ...
- 【ASP.NET Web API教程】6.2 ASP.NET Web API中的JSON和XML序列化
谨以此文感谢关注此系列文章的园友!前段时间本以为此系列文章已没多少人关注,而不打算继续下去了.因为文章贴出来之后,看的人似乎不多,也很少有人对这些文章发表评论,而且几乎无人给予“推荐”.但前几天有人询 ...
- 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 ...
- ASP.NET Web API中的JSON和XML序列化
ASP.NET Web API中的JSON和XML序列化 前言 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnblogs.com/aehyok ...
随机推荐
- libevent源码剖析
libevent是一个使用C语言编写的,轻量级的开源高性能网络库,使用者很多,研究者也很多.由于代码简洁,设计思想简明巧妙,因此很适合用来学习,提升自己C语言的能力. libevent有这样显著地几个 ...
- [JavaScript] js获取当前页面url网址信息
在WEB开发中,时常会用到javascript来获取当前页面的url网址信息,在这里是我的一些获取url信息的小总结. 下面我们举例一个URL,然后获得它的各个组成部分:http://i.cnblog ...
- Python中的运算符与表达式
你所编写的大多数语句(逻辑行)都包含了表达式(Expressions).一个表达式的简单例子便是 2+3.表达式可以拆分成运算符(Operators)与操作数(Operands).运算符(Operat ...
- 【NOIP2017】逛公园 最短路+DP
诶,去年场上不会处理$0$的环,只拿了$60$有点可惜. 我们先不管边边权为$0$的边. 我们先跑一次最短路,令$dis[u]$表示从$1$至$u$的最短路的长度. 那么根据题目的要求,从起点走到$u ...
- hive算法报错..
hive普通语句查询报错.. 查到以下设定项,,附加在语句前执行成功.. 但是有可能没有真正的执行.. 试到最后使用标红的三行附加在语法前执行成功 set hive.execution.engine= ...
- css网页布局 --- 左边固定,右边自适应
div的布局统一如下: <body> <div class="wrap"> <div class="left"></d ...
- Chapter 3 Phenomenon——5
I saw several things simultaneously. 我同时看见了几件事情. Nothing was moving in slow motion,the way it does i ...
- elasticsearch插件安装之--拼音插件
/** * vm12下的centos7.2 * elasticsearch 5.2.2 */ 有时在淘宝搜索商品的时候, 会发现使用汉字, 拼音, 或者拼音混合汉字都会出来想要的搜索结果, 今天找了一 ...
- C#的SubString(int start,int end);
C#的SubString(); 例子: string str = "i am a girl"; string temp = str.Substring(2,2);//从索引2开始, ...
- java.io.Serializable的作用
Serializable,之前一直有使用,默认的实体类就会实现Serializable接口,对具体原因一直不是很了解,同时如果没有实现序列化,同样没什么影响,什么时候应该进行序列化操作呢?今天查了下资 ...