C# WCF WebInvoke响应是否有大小限制?
我有一个WCF web服务,定义如下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
[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多个报告对我们的客户来说是非常无用的,因此我也在进行分页。