好吧,我已经建立并测试了一个很好的小WCF服务。客户端创建一个字符串并将其传递给服务上的一个方法,然后该服务将其另存为一个文件。用少量的测试数据的完美作品,但是当我有什么应该做的尝试 - 通过一些序列化.NET对象 - 它属于过去,与错误在哪里增加maxStringContentLength为了让WCF传递大字符串?
格式化扔同时 尝试反序列化异常消息: 错误反序列化请求主体 消息操作最大字符串 内容长度配额(8192)在读取XML数据时已被超出。这种配额可能会增加通过更改XmlDictionaryReaderQuotas的MaxStringContentLength属性创建XML阅读器
所以我瞪着这一点,并发现MaxStringContentLength属性应在“readerQuotas”标签的标签内设定当对象使用配置文件,如下:
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
所以我改变它。我在客户端的App.config文件上更改它。我在App.config文件和我的服务器的Web.config文件上更改它。我在单元测试项目的App.config文件中更改它。而且它们都不起作用 - 我一直得到同样的错误。
有趣的是,令人沮丧的是,当我启动WcfClient.exe来看看我的服务,连接到它并查看配置文件(Client.dll.config)时,我被gobsmacked发现这个auto - 生成文件没有包含我的变化,并已重置为:
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
我不知道从哪里它是从获得这些值 - 无处在我的整个解决方案中的这些被设置。所以它必须使用默认值,但我不明白为什么当我在服务器和客户端都提供自定义配置文件时,它使用默认值。
任何人都可以帮我解决这个问题吗?
你可以发布绑定的配置,你把`readerQuotas`元素放在哪里? – vlad 2011-02-18 16:36:45