好的,我已经设置并测试了一个不错的小型 WCF 服务。客户端创建一个字符串并将其传递给服务上的方法,然后服务将其保存为文件。与少量的测试数据完美配合,但是当我尝试它应该做的事情时 - 传递一些序列化的 .net 对象 - 它崩溃了,并出现错误
格式化程序抛出异常
尝试反序列化消息:
反序列化请求正文时出错
操作消息最大字符串
读取 XML 数据时超出了内容长度配额 (8192)。可以通过更改创建 XML 读取器时使用的 XmlDictionaryReaderQuotas 对象上的 MaxStringContentLength 属性来增加此配额
因此,我仔细研究了一下,发现 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) 时,我惊讶地发现这个自动生成的文件包含我没有进行任何更改并已重置为:
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
我不知道它从哪里获取这些值 - 在我的整个解决方案中没有任何地方设置这些值。所以它必须使用默认值,但是当我在服务器和客户端都提供了自定义配置文件时,我不明白为什么它使用默认值。
谁能帮我解决这个问题吗?
1) 您的端点是否有可能没有正确引用自定义绑定?您可以发布您的绑定和端点部分吗?
2) WcfTestClient 不使用您的服务或客户端配置来设置其自己的配置。在执行服务之前,您需要使用 SvcConfigEditor 手动编辑 Client.dll.config 以设置 WcfTestClient 客户端绑定数据。
如果您查看“工具”->“选项”菜单,则可以保留 WcfTestClient 配置更改。有关 WcfTestClient 的更多信息,请查看:http://msdn.microsoft.com/en-us/library/bb552364.aspx http://msdn.microsoft.com/en-us/library/bb552364.aspx
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)