上传下载大点的数据文件,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分钟时间,我把下面两部分没当成在一个文件里,但是切记它们实际是在一个文件里。)








name="DomainWS.DomainServiceV2">







次要问题:

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

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

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

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

http://blog.csdn.net/sam1012/article/details/6265472

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注


*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>