已超出传入邮件的最大邮件大小限额>>设置为900000

时间:2012-04-10 17:24:01

标签: asp.net wcf

我有一个带有WCF服务的ASP.NET MVC3解决方案。当我从此WCF服务获得公司列表(超过2200条记录)时,出现错误:已超出传入邮件的最大邮件大小配额

原因是在Web.Config文件中:maxBufferPoolSize和maxReceivedMessageSize是65536.我改为900000,现在我没有任何问题。

我的问题:maxBufferPoolSize和maxReceivedMessageSize的值为900000(900k)是否合理?我真的需要我的所有记录来分页数据。

子问题:直接在WCF服务中“分页”并返回所需的数据页面效率更高吗?值得吗?

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

900k的邮件大小并非不合理。我建议运行一些检查,以确保它给你扩展的空间,例如。当你有4000条记录时,它仍然适用吗?我已经看到了2MB作为限制的其他建议,所以你很好。

根据您的意见,另一种方法是提供两种方法:

GetAllRecords()
returns all

GetSomeRecords(int limit)
returns a subset, plus a count of the total available.

您的客户端应用可以根据用户偏好选择要调用的方法。如果用户想要查看页面,请在客户端应用程序中调用GetAllRecords和paginate。

答案 1 :(得分:1)

MaxReceivedMessageSize应保持较小以避免DoS攻击。如果您的服务是在Intranet方案中,则应该可以大于默认值。如果它在公共内部网上,您需要权衡攻击的影响与要求分页的可用性影响。

maxbufferPool大小更难回答,因为它取决于您期望的并发请求数。试试这个解释

http://social.msdn.microsoft.com/Forums/en/wcf/thread/d6e234d3-942f-4e9d-8470-32618d3f3212/