如果你're still getting this error message while using the WCF Test Client, it'因为客户端有一个单独的 MaxBufferSize 设置 .
To correct the issue:
右键单击树底部的 Config File 节点
选择使用SvcConfigEditor编辑
将显示可编辑设置列表,包括MaxBufferSize .
Note: 默认情况下,自动生成的代理客户端还将MaxBufferSize设置为65536 .
6
如果要动态创建WCF绑定,请使用以下代码:
BasicHttpBinding httpBinding = new BasicHttpBinding();
httpBinding.MaxReceivedMessageSize = Int32.MaxValue;
httpBinding.MaxBufferSize = Int32.MaxValue;
// Commented next statement since it is not required
// httpBinding.MaxBufferPoolSize = Int32.MaxValue;
13 回答
您需要这样的东西来增加App.config或Web.config文件中的邮件大小配额:
并在 endpoints 配置中使用绑定名称,例如
值的理由很简单,它们足够大以容纳大多数消息 . 您可以调整该数字以满足您的需求 . 低默认值基本上是为了防止DOS类型攻击 . 使其成为20000000将允许分布式DOS攻击有效,默认大小为64k将需要大量客户端来支持大多数服务器 .
如果你're still getting this error message while using the WCF Test Client, it'因为客户端有一个单独的 MaxBufferSize 设置 .
To correct the issue:
右键单击树底部的 Config File 节点
选择使用SvcConfigEditor编辑
将显示可编辑设置列表,包括MaxBufferSize .
Note: 默认情况下,自动生成的代理客户端还将MaxBufferSize设置为65536 .
如果要动态创建WCF绑定,请使用以下代码:
WCF Test Client 拥有自己的客户端配置 .
运行测试客户端并滚动到底部 . 如果双击“配置文件”节点,您将看到XML表示 . 如您所见,
maxReceivedMessageSize
是65536
.要编辑它,请右键单击“配置文件”树节点,然后选择“使用
SvcConfigEditor
编辑” . 编辑器打开时展开Bindings并双击自动生成的绑定 .您可以在此处编辑所有属性,包括
maxReceivedMessageSize
. 完成后,单击文件 - 保存 .最后,当您返回WCF测试客户端窗口时,单击工具 - 选项 .
NOTE :取消选中启动服务时始终重新生成配置 .
我找到了简单的方法
我解决了这个问题......如下
我在我的项目中使用CalculateRoute()在Bing Maps WPF上解决了我的问题 . 我的解决方案是在“customBinding”部分的属性“httpTransport”上设置maxReceivedMessageSize和maxReceivedMessageSize .
我在applications.config文件(es.myApp.config)中设置了这个配置:
Another important thing to consider from my experience..
我强烈建议不要最大化maxBufferPoolSize,因为池中的缓冲区永远不会释放,直到app-domain(即应用程序池)循环使用 .
高流量时段可能会导致大量内存被使用而且从未被释放 .
更多细节在这里:
https://stackoverflow.com/a/19953113/496676
http://andriybuday.com/2011/08/wcf-configuration-caused-memory-leaks.html
不要忘记执行入口点的app.config将被考虑,而不是管理Web服务调用的类库项目中的那个(如果有) .
例如,如果在运行单元测试时遇到错误,则需要在测试项目中设置适当的配置 .
对我来说,我所要做的就是将
maxReceivedMessageSize="2147483647"
添加到客户端app.config中 . 服务器没有动过 .对于 HTTP:
对于 TCP:
IMPORTANT:
如果您尝试传递具有许多连接对象的复杂对象(例如:树数据结构,具有许多对象的列表......),无论您如何增加配额,通信都将失败 . 在这种情况下,您必须增加包含对象的数量:
我在web.config上使用此设置时出现此错误
我设置这样的设置: