上传下载大点的数据文件,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

相关文章

C#读取本地网络配置信息全攻略分享

《C#读取本地网络配置信息全攻略分享》在当今数字化时代,网络已深度融入我们生活与工作的方方面面,对于软件开发而言,掌握本地计算机的网络配置信息显得尤为关键,而在C#编程的世界里,我们又该如何巧妙地读取... 目录一、引言二、C# 读取本地网络配置信息的基础准备2.1 引入关键命名空间2.2 理解核心类与方法

最新版IDEA配置 Tomcat的详细过程

《最新版IDEA配置Tomcat的详细过程》本文介绍如何在IDEA中配置Tomcat服务器,并创建Web项目,首先检查Tomcat是否安装完成,然后在IDEA中创建Web项目并添加Web结构,接着,... 目录配置tomcat第一步,先给项目添加Web结构查看端口号配置tomcat    先检查自己的to

更改docker默认数据目录的方法步骤

《更改docker默认数据目录的方法步骤》本文主要介绍了更改docker默认数据目录的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1.查看docker是否存在并停止该服务2.挂载镜像并安装rsync便于备份3.取消挂载备份和迁

Servlet中配置和使用过滤器的步骤记录

《Servlet中配置和使用过滤器的步骤记录》:本文主要介绍在Servlet中配置和使用过滤器的方法,包括创建过滤器类、配置过滤器以及在Web应用中使用过滤器等步骤,文中通过代码介绍的非常详细,需... 目录创建过滤器类配置过滤器使用过滤器总结在Servlet中配置和使用过滤器主要包括创建过滤器类、配置过滤

在 VSCode 中配置 C++ 开发环境的详细教程

《在VSCode中配置C++开发环境的详细教程》本文详细介绍了如何在VisualStudioCode(VSCode)中配置C++开发环境,包括安装必要的工具、配置编译器、设置调试环境等步骤,通... 目录如何在 VSCode 中配置 C++ 开发环境:详细教程1. 什么是 VSCode?2. 安装 VSCo

在Spring中配置Quartz的三种方式

《在Spring中配置Quartz的三种方式》SpringQuartz是一个任务调度框架,它允许我们定期执行特定的任务,在Spring中,我们可以通过多种方式来配置Quartz,包括使用​​@Sche... 目录介绍使用 ​​@Scheduled​​ 注解XML 配置Java 配置1. 创建Quartz配置

Kibana的安装和配置全过程

《Kibana的安装和配置全过程》Kibana是一个开源的数据分析和可视化平台,它与Elasticsearch紧密集成,提供了一个直观的Web界面,使您可以快速地搜索、分析和可视化数据,在本文中,我们... 目录Kibana的安装和配置1.安装Java运行环境2.下载Kibana3.解压缩Kibana4.配

Java中JSON字符串反序列化(动态泛型)

《Java中JSON字符串反序列化(动态泛型)》文章讨论了在定时任务中使用反射调用目标对象时处理动态参数的问题,通过将方法参数存储为JSON字符串并进行反序列化,可以实现动态调用,然而,这种方式容易导... 需求:定时任务扫描,反射调用目标对象,但是,方法的传参不是固定的。方案一:将方法参数存成jsON字

tomcat在nginx中的配置方式

《tomcat在nginx中的配置方式》文章介绍了如何在Linux系统上安装和配置Tomcat,并通过Nginx进行代理,首先,下载并解压Tomcat压缩包,然后启动Tomcat并查看日志,接着,配置... 目录一、下载安装tomcat二、启动tomcat三、配置nginx总结提示:文章写完后,目录可以自动

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现