Json web service max content length?
I have been building a Asp.net WCF web service with json format. Now I wanted to really test how its working when sending lots of data. The Content-Length of my http post is 65595. Directly when trying to connect I got error "HTTP/1.1 400 Bad Request" back. It seems like it's not even trying.
I know I'm sending valid json and what I'm sending is an array with about 1000 items, and the json for each item looks like this: {"oid":0,"am":1,"me":2,"ofooid":0,"fooid":1104,"sync":1,"type":1,"id":1443,"date":"2009-09-24"}
If I just delete one of the items in the array so the total content-length is 65484 it works perfect. So it seems like it's a magic limit around there somewhere. Is it Asp.net that limit the size of the request, and how can I change the max size if that's the case?
My Web.Config file looks like, and I think I should set the maximum value here somewhere but I just don't know where:
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior n开发者_如何学编程ame="ServiceAspNetAjaxBehavior">
<enableWebScript />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="ServiceBehavior">
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="ServiceBehavior" name="Service">
<endpoint address="" behaviorConfiguration="ServiceAspNetAjaxBehavior" binding="webHttpBinding" contract="Service" />
</service>
</services>
</system.serviceModel>
You need to increase the maxReceivedMessageSize in the binding configuration for WebHttpBinding. The default is 65536. See the WebHttpBinding configuration documentation for all of the information.
Also note that you may need to increase the ASP.NET maxRequestLength via the httpRuntime configuration. The default is 4 MB but you may need to increase:
<httpRuntime maxRequestLength="10000" />
As far as increasing the size of the request is concerned above mentioned answer is right but if you want to increase the size of the json response then you can do this by doing changes in the endpointBehaviors as mentioned below.
Also not that response may vary according to the nesting of the data, as we may return list with nested properties.
Assuming endpoint like this:
<endpoint address="" binding="webHttpBinding" contract="WcfService1.IService1" behaviorConfiguration="ClientBehavior">
For Client
<endpointBehaviors>
<behavior name="ClientBehavior">
<dataContractSerializer maxItemsInObjectGraph="10000000"/>
</behavior>
</endpointBehaviors>
For Server
<serviceBehaviors>
<behavior name="HostBehavior">
<dataContractSerializer maxItemsInObjectGraph="10000000"/>
</behavior>
<serviceBehaviors>
精彩评论