上传下载大点的数据文件,WCF用默认配置不能正常的序列化和反序列化

本文主要是介绍上传下载大点的数据文件,WCF用默认配置不能正常的序列化和反序列化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

今天遇到两个问题,一个主要问题,一个次要问题。

 

主要问题:上传下载大点的数据文件,WCF用默认配置不能正常的序列化和反序列化。

运行WCF,上传13K的XML数据出错。错误如下:

格式化程序尝试对消息反序列化时引发异常,对操作"SetFigureData"的请求消息正文进行反序列化时出现错误。读取XML数据时,超出最大字符串内容长度配额(8192)。通过更改在创建XML读取器时所使用的XmlDictionaryReaderQuotas对象的MaxStringContentLenght属性,可增加此配额。第156行,位置为48。

 

解决办法,有位园友写到了,可以参考如下:

http://www.cnblogs.com/upzone/archive/2009/01/20/1378655.html

大致思路:上传不行,就看服务器端的App.config;下载不行,就看客户端的App.config。我没从这出发,我在做上传的时候,老拘泥于客户端的App.config文件,其实早配对了,还是报错,出错原因是在服务器端的App.config中,没配置,就是用缺省的设置了。当然,网上还有个人,说去改machine.config文件,更是小题大作,把问题想远了。我们都知道machine.config是根,不应该随便动的,应该专事专办。

我再补充下,WCF生成的文件App.config文件,是不包含bindings节点的。(就为这个,浪费我40分钟时间,我把下面两部分没当成在一个文件里,但是切记它们实际是在一个文件里。)

<bindings>
  <wsHttpBinding>
    <binding name="NewBinding2" maxReceivedMessageSize="67108864">
      <readerQuotas maxStringContentLength="67108864"/>
      <security mode="None" />
    </binding>
  </wsHttpBinding>
</bindings>

<service behaviorConfiguration="DomainWS.DomainServiceV2Behavior"
      name="DomainWS.DomainServiceV2">
  <endpoint address="" binding="wsHttpBinding" bindingConfiguration="NewBinding2" contract="DomainWS.IDomainV2">
    <identity>
      <dns value="localhost" />
    </identity>
  </endpoint>
  <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>

 

次要问题:

在解决上述问题的时候,引入的另一个问题,尝试按MSDN博客上一个人的方法,修改客户端的App.config,结果客户端的Binding方式变了,从wsHttpBinding改为basicHttpBinding,却忘了改服务器的Binding方式,还是用的wsHttpBinding。当然对不上号了,一运行如下错误出现:

服务 http: 不支持内容类型 text/xml; charset=utf-8。客户端和服务绑定可能不匹配。

 

按关键字一搜,就找到类似问题了。不过那个楼主在看到真正的答案的时候,好像也没意识到。哎,可惜了。

 

 总结来说,分析问题的能力很重要,老外管它叫“Trouble Shooting Ability”。

 

相关文章:http://www.cnblogs.com/mingzhe/archive/2009/07/07/1518468.html

这篇关于上传下载大点的数据文件,WCF用默认配置不能正常的序列化和反序列化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/291363

相关文章

Android开发环境配置避坑指南

《Android开发环境配置避坑指南》本文主要介绍了Android开发环境配置过程中遇到的问题及解决方案,包括VPN注意事项、工具版本统一、Gerrit邮箱配置、Git拉取和提交代码、MergevsR... 目录网络环境:VPN 注意事项工具版本统一:android Studio & JDKGerrit的邮

Java controller接口出入参时间序列化转换操作方法(两种)

《Javacontroller接口出入参时间序列化转换操作方法(两种)》:本文主要介绍Javacontroller接口出入参时间序列化转换操作方法,本文给大家列举两种简单方法,感兴趣的朋友一起看... 目录方式一、使用注解方式二、统一配置场景:在controller编写的接口,在前后端交互过程中一般都会涉及

SpringBoot3.4配置校验新特性的用法详解

《SpringBoot3.4配置校验新特性的用法详解》SpringBoot3.4对配置校验支持进行了全面升级,这篇文章为大家详细介绍了一下它们的具体使用,文中的示例代码讲解详细,感兴趣的小伙伴可以参考... 目录基本用法示例定义配置类配置 application.yml注入使用嵌套对象与集合元素深度校验开发

IntelliJ IDEA 中配置 Spring MVC 环境的详细步骤及问题解决

《IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决》:本文主要介绍IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决,本文分步骤结合实例给大... 目录步骤 1:创建 Maven Web 项目步骤 2:添加 Spring MVC 依赖1、保存后执行2、将新的依赖

SpringBoot基于配置实现短信服务策略的动态切换

《SpringBoot基于配置实现短信服务策略的动态切换》这篇文章主要为大家详细介绍了SpringBoot在接入多个短信服务商(如阿里云、腾讯云、华为云)后,如何根据配置或环境切换使用不同的服务商,需... 目录目标功能示例配置(application.yml)配置类绑定短信发送策略接口示例:阿里云 & 腾

如何为Yarn配置国内源的详细教程

《如何为Yarn配置国内源的详细教程》在使用Yarn进行项目开发时,由于网络原因,直接使用官方源可能会导致下载速度慢或连接失败,配置国内源可以显著提高包的下载速度和稳定性,本文将详细介绍如何为Yarn... 目录一、查询当前使用的镜像源二、设置国内源1. 设置为淘宝镜像源2. 设置为其他国内源三、还原为官方

C++如何通过Qt反射机制实现数据类序列化

《C++如何通过Qt反射机制实现数据类序列化》在C++工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作,所以本文就来聊聊C++如何通过Qt反射机制实现数据类序列化吧... 目录设计预期设计思路代码实现使用方法在 C++ 工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作。由于数据类

CentOS7更改默认SSH端口与配置指南

《CentOS7更改默认SSH端口与配置指南》SSH是Linux服务器远程管理的核心工具,其默认监听端口为22,由于端口22众所周知,这也使得服务器容易受到自动化扫描和暴力破解攻击,本文将系统性地介绍... 目录引言为什么要更改 SSH 默认端口?步骤详解:如何更改 Centos 7 的 SSH 默认端口1

Maven的使用和配置国内源的保姆级教程

《Maven的使用和配置国内源的保姆级教程》Maven是⼀个项目管理工具,基于POM(ProjectObjectModel,项目对象模型)的概念,Maven可以通过一小段描述信息来管理项目的构建,报告... 目录1. 什么是Maven?2.创建⼀个Maven项目3.Maven 核心功能4.使用Maven H

SpringBoot多数据源配置完整指南

《SpringBoot多数据源配置完整指南》在复杂的企业应用中,经常需要连接多个数据库,SpringBoot提供了灵活的多数据源配置方式,以下是详细的实现方案,需要的朋友可以参考下... 目录一、基础多数据源配置1. 添加依赖2. 配置多个数据源3. 配置数据源Bean二、JPA多数据源配置1. 配置主数据