0

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

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

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

子问题:直接在 WCF 服务中“分页”并仅返回所需的数据页是否更有效?这值得吗?

谢谢你的帮助。

4

2 回答 2

1

900k 消息大小并非不合理。我建议进行一些检查以确保它为您提供扩展空间,例如。当你有 4000 条记录时它仍然适合吗?我已经看到了 2MB 作为限制的其他建议,所以你在这个范围内。

根据您的评论,另一种方法是提供两种方法:

GetAllRecords()
returns all

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

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

于 2012-04-10T18:14:32.730 回答
1

MaxReceivedMessageSize 应保持较小以避免 DoS 攻击。如果你的服务是内网场景,比默认大应该没问题。如果它在公共 Intranet 上,您需要权衡攻击的影响与需要分页的可用性影响。

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

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

于 2012-04-10T19:37:54.047 回答