我有一个WCF服务,从数据库返回1000条记录到客户端。我有一个ASP。NET WCF客户端(我已经在asp.net web应用程序项目中添加了服务引用来使用WCF)。

当我运行客户端应用程序时,我得到以下消息:

传入消息的最大消息大小配额(65536)已为 超过了。如果需要增加配额,使用 MaxReceivedMessageSize属性 适当的绑定元素。

任何帮助吗?如何增加消息大小配额?


当前回答

从我的经验来看,另一件需要考虑的重要事情是…

我强烈建议不要最大化maxBufferPoolSize,因为在应用程序域(即应用程序池)回收之前,池中的缓冲区永远不会释放。

一段时间的高流量可能会导致大量内存被使用,并且永远不会释放。

详情如下:

https://stackoverflow.com/a/19953113/496676 http://andriybuday.com/2011/08/wcf-configuration-caused-memory-leaks.html

其他回答

如果你正在动态创建你的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;

对我来说,我所要做的就是在客户端app.config中添加maxReceivedMessageSize="2147483647"。服务器没有受到影响。

我找到了简单的方法

右键单击webconfig或app配置文件,然后单击EDIT WCF CONFIGURATION,然后进入bingdigs并选择您的服务和权限 边显示maxReciveMessageSize给出一个大的数字——

如果您在使用WCF测试客户端时仍然得到这个错误消息,这是因为客户端有一个单独的MaxBufferSize设置。

要纠正这个问题:

右键单击树底部的Config File节点 选择用SvcConfigEditor编辑

将出现一个可编辑的设置列表,包括MaxBufferSize。

注意:自动生成的代理客户端也默认设置MaxBufferSize为65536。

从我的经验来看,另一件需要考虑的重要事情是…

我强烈建议不要最大化maxBufferPoolSize,因为在应用程序域(即应用程序池)回收之前,池中的缓冲区永远不会释放。

一段时间的高流量可能会导致大量内存被使用,并且永远不会释放。

详情如下:

https://stackoverflow.com/a/19953113/496676 http://andriybuday.com/2011/08/wcf-configuration-caused-memory-leaks.html