gpt4 book ai didi

.net - 为了让 WCF 传递大字符串,在哪里增加 maxStringContentLength?

转载 作者:行者123 更新时间:2023-12-04 04:27:23 25 4
gpt4 key购买 nike

好的,我已经设置并测试了一个不错的小 WCF 服务。客户端创建一个字符串并将其传递给服务的方法,然后服务将其保存为文件。与少量测试数据完美配合,但是当我尝试它应该做的事情时 - 传递一些序列化的 .net 对象 - 它会失败,并出现错误

The formatter threw an exception while trying to deserialize the message: Error in deserializing body of request message for operation maximum string content length quota (8192) has been exceeded while reading XML data. This quota may be increased by changing the MaxStringContentLength property on the XmlDictionaryReaderQuotas object used when creating the XML reader



所以我看了一下,发现 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)您的端点是否可能没有正确引用自定义绑定(bind)?你能发布你的绑定(bind)和端点部分吗?

2) WcfTestClient 不使用您的服务或客户端配置来设置自己的配置。在执行服务之前,您需要使用 SvcConfigEditor 手动编辑 Client.dll.config 以设置 WcfTestClient 客户端绑定(bind)数据。

如果您查看工具 -> 选项菜单,您可以保留您的 WcfTestClient 配置更改。有关 WcfTestClient 的更多信息,请查看:http://msdn.microsoft.com/en-us/library/bb552364.aspx

关于.net - 为了让 WCF 传递大字符串,在哪里增加 maxStringContentLength?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5043762/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com