WCF学习笔记:传递DataTable 报错是因为WCF不支持DataTable数据类型,DataContractSerializer 支持的类型...

最近在学习WCF,想传递从数据库中查询的大量数据到客户端显示,用DataTable做数据载体,结果老是报下面这个错误:

接收对 http://localhost:8731/wcfServices/Mate 的  HTTP 响应时发生错误。这可能是由于服务终结点绑定未使用 HTTP 协议造成的。这还可能是由于服务器中止了 HTTP 请求上下文(可能由于服务关闭)所致。有关详细信息,请参阅服务器日志 

上谷歌,找各种原因和解决方案,总结如下:

【1】传输的数据量太大,在配置文件中修改Behaviors节点内容

  服务端:

<behaviors>
<serviceBehaviors>
<behavior name="MathServices">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
<dataContractSerializer maxItemsInObjectGraph="65536000"/>
</behavior>
</serviceBehaviors>
</behaviors>

 

  客户端:

  <behaviors>
<endpointBehaviors>
<behavior name="MathServices">
<dataContractSerializer maxItemsInObjectGraph="65536000"/>
</behavior>
</endpointBehaviors>
</behaviors>

【2】WCF不支持DataTable数据类型

  默认情况下,WCF 使用 DataContractSerializer 类来序列化数据类型。此序列化程序支持下列类型:

    (1)基元类型(如:整数、字符串和字节数组)以及某些特殊类型(如 XmlElement 和 DateTime),这些特殊类型也被视为基元类型。
    (2)数据协定类型(用 DataContractAttribute属性标记的类型)。
    (3)用 SerializableAttribute 属性标记的类型,包括实现 ISerializable接口的类型。
    (4)实现 IXmlSerializable接口的类型。
    (5)许多常见集合类型,包括许多泛型集合类型。

  老徐的博客有遍文章讲WCF支持的数据类型很详细,推荐给大家参考:http://www.frankxulei.com/?p=183

 

转载于:https://www.cnblogs.com/shuhaicaiyun/archive/2011/11/18/2253976.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值