Type 'System.IO.FileStream' with data contract name 'FileStream:http://schemas.datacontract.org/2004/07/System.IO' is not expected.
2016-06-15 16:46
495 查看
今天在WCF项目里使用DataContract序列化接口参数的时候,报了这个错,错误详细信息如下:
System.ServiceModel.CommunicationException: There was an error while trying to serialize parameter http://tempuri.org/:reqDTO. The InnerException message was 'Type 'System.IO.FileStream' with data contract name 'FileStream:http://schemas.datacontract.org/2004/07/System.IO' is not expected. Consider using a DataContractResolver or add any types not known statically to the list of known types - for example, by using the KnownTypeAttribute attribute or by adding them to the list of known types passed to DataContractSerializer.'. Please see InnerException for more details. ---> System.Runtime.Serialization.SerializationException: Type 'System.IO.FileStream' with data contract name 'FileStream:http://schemas.datacontract.org/2004/07/System.IO' is not expected. Consider using a DataContractResolver or add any types not known statically to the list of known types - for example, by using the KnownTypeAttribute attribute or by adding them to the list of known types passed to DataContractSerializer.
然后我就百度了一下,发现国外有个小哥也遇到相同的问题,别人给他的解释是:
意思是说DataContract序列化的方式和MessageContract消息序列化的方式不一样,如果你的WCF接口参数里包含有Stream(流类型),就必须用MessageContract。
System.ServiceModel.CommunicationException: There was an error while trying to serialize parameter http://tempuri.org/:reqDTO. The InnerException message was 'Type 'System.IO.FileStream' with data contract name 'FileStream:http://schemas.datacontract.org/2004/07/System.IO' is not expected. Consider using a DataContractResolver or add any types not known statically to the list of known types - for example, by using the KnownTypeAttribute attribute or by adding them to the list of known types passed to DataContractSerializer.'. Please see InnerException for more details. ---> System.Runtime.Serialization.SerializationException: Type 'System.IO.FileStream' with data contract name 'FileStream:http://schemas.datacontract.org/2004/07/System.IO' is not expected. Consider using a DataContractResolver or add any types not known statically to the list of known types - for example, by using the KnownTypeAttribute attribute or by adding them to the list of known types passed to DataContractSerializer.
然后我就百度了一下,发现国外有个小哥也遇到相同的问题,别人给他的解释是:
DataContractmessages serialize in a different way than
MessageContractmessages. Having a
Streammember (thus allowing streaming) must be done using
MessageContract, wcf then understands it is inteded for streaming and does not try to perform standard serialization.
意思是说DataContract序列化的方式和MessageContract消息序列化的方式不一样,如果你的WCF接口参数里包含有Stream(流类型),就必须用MessageContract。
相关文章推荐
- haproxy tcp可用配置
- spring框架的项目报错:No mapping found for HTTP request with URI [ ] in DispatcherServlet with name 'spring'
- 使用HTTP调用JSF(杰夫)接口
- HTTP Status 500 - Tag file directory /tagfiledoes not start with "/WEB-INF/tags"
- iOS 9 Https问题解决方案
- linux centos Git : HTTP request failed(ps:添加centos git升级)
- c# - Post数据到指定HTTP URL
- 渠道、数据、技术,谁才是网络信贷市场的决胜因素?
- 使用 jdk自带ssl包 进行 https通讯双向认证
- TCP/IP详解——数据链路层
- TCP/IP详解——概述
- 【Linux网络编程】使用GDB调试程序
- IPC网络高清摄像机基础知识4(Sensor信号输出YUV、RGB、RAW DATA、JPEG 4种方式区别)
- kubernets 架构设计 第3章 网络
- 基于caffe的图像分类(3)——修改网络并训练模型
- Fiddler命令行和HTTP断点调试
- Android’s HTTP Clients (httpClient 和 httpURLConnect 区别)
- http://www.asp.net/mvc/overview/getting-started/getting-started-with-ef-using-mvc/creating-an-entity-framework-data-model-for-an-asp-net-mvc-application
- Android 4.4以上使用HttpURLConnection底层使用OkHttp实现的源码分析
- HDFS数据迁移解决方案之DistCp工具的巧妙使用