Json网络服务的最大内容长度是多少?

4
我正在构建一个使用json格式的Asp.net WCF网络服务。现在我想真正测试一下当发送大量数据时它的工作情况。我的http post的Content-Length为65595。直接尝试连接时,我收到了错误信息“HTTP/1.1 400 Bad Request”。似乎它甚至没有尝试。
我知道我正在发送有效的json,我发送的是一个包含约1000个项目的数组,每个项目的json如下: {"oid":0,"am":1,"me":2,"ofooid":0,"fooid":1104,"sync":1,"type":1,"id":1443,"date":"2009-09-24"}
如果我只删除数组中的一个项目,使总Content-Length为65484,那么它就完美地工作了。所以似乎在那里有一个神奇的限制。是Asp.net限制了请求的大小吗?如果是这样,我该如何更改最大值?
我的Web.Config文件如下,我认为我应该在这里设置最大值,但我不知道应该在哪里:
<system.serviceModel>
    <behaviors>
       <endpointBehaviors>
           <behavior name="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>
2个回答

4

您需要在WebHttpBinding的绑定配置中增加maxReceivedMessageSize。默认值为65536。有关所有信息,请参见WebHttpBinding配置文档

还要注意,您可能需要通过httpRuntime配置来增加ASP.NET maxRequestLength。默认值为4 MB,但您可能需要增加:

<httpRuntime maxRequestLength="10000" />

谢谢,这正是我在寻找的!你认为maxReceivedMessageSize的一个好值是多少?我不想发送太多数据,也许我应该将请求分成较小的大小并连接多次? - Martin

3

如果您想增加JSON响应的大小,那么可以通过以下更改端点行为来实现。如果要增加请求的大小,上述答案是正确的。

同时需要注意,响应可能会根据数据的嵌套而有所不同,因为我们可能会返回带有嵌套属性的列表。

假设端点如下:

<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>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接