C# WCF WebInvoke响应是否有大小限制?

C# WCF WebInvoke响应是否有大小限制?,c#,wcf,json,rest,C#,Wcf,Json,Rest,我有一个WCF web服务,定义如下 [OperationContract] [WebInvoke( Method = "GET", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare, UriTemplate = "Assets/{assetId}/Reports/{startDate}/{endDate}")] JQGridDataStore<Repor

我有一个WCF web服务,定义如下

[OperationContract]
[WebInvoke(
    Method = "GET",
    ResponseFormat = WebMessageFormat.Json,
    BodyStyle = WebMessageBodyStyle.Bare,
    UriTemplate = "Assets/{assetId}/Reports/{startDate}/{endDate}")]
JQGridDataStore<Report> GetReportsForAssetFilterByDate(string assetId, string startDate, string endDate);
[运营合同]
[WebInvoke(
Method=“GET”,
ResponseFormat=WebMessageFormat.Json,
BodyStyle=WebMessageBodyStyle.Bare,
UriTemplate=“资产/{assetId}/Reports/{startDate}/{endDate}”)]
JQGridDataStore GetReportsForasetFilterByDate(字符串assetId、字符串startDate、字符串endDate);
当我的JQGridDataStore包含数千个报表实例时,我不难获得响应。但是,数据存储超过10000份报告,我在浏览器中获得以下信息:

错误324(网络::ERR\u EMPTY\u响应):未知错误

我一步一步地完成服务的实现,我可以看到它一步一步地完成,没有任何例外。JQGridDataStore对象已完全创建,并填充了10000多个报表实例。但是,当我“F10”超过返回值时,浏览器显示一个空响应。这一切都发生在不到一秒钟的时间里,所以我认为我没有达到任何类型的超时


基于此,我认为我遇到了某种类型的缓冲区大小限制。有哪些限制?我将如何调整这些限制?

在客户端web.config中,您可以通过在绑定上设置maxReceivedMessageSize属性来设置服务可以接收的最大大小:

<bindings>
  <webHttpBinding>
    <binding name="myWebHttpBinding" maxReceivedMessageSize="2000000" maxBufferSize="2000000">
    </binding>
  </webHttpBinding>
</bindings>

我认为默认值为65536,因此如果您的响应大于该值,则可能是您的问题


希望这有帮助

您可能遇到了DataContractJsonSerializer的MaxItemsInObjectGraph配额(每个单独的对象-如果您的数组中有两个复杂类型,其中10k个将很容易达到此限制)。您可以在行为配置中设置它,如


也就是说,我建议您研究分页隐喻。没有人愿意等待所有这些东西在一次机会内全部落下

这是一个WCF客户端设置-他的客户端是一个浏览器。你的回答解决了我的问题。maxReceivedMessageSize是请求的限制,而不是响应。因此,这可能对JadeMason没有帮助。我建议在svcconfigeditor中加载您的服务配置,然后查看并增加各种限制。一次完成10000多个报告对我们的客户来说是非常无用的,因此我也在进行分页。