Ajax 从web API获取大型JSON

Ajax 从web API获取大型JSON,ajax,json,asp.net-mvc,asp.net-web-api,serialization,Ajax,Json,Asp.net Mvc,Asp.net Web Api,Serialization,我正在使用.NETWebAPI为我的数据网格获取数据。这个调用是通过如下的ajax调用进行的 $.ajax{ 键入:“GET”, 数据类型:“json”, contentType:application/json;字符集=utf-8, url:ReportURL,//api/AppData/InvoiceReport/10 成功:函数mydata{ console.logmydata; createReportGridmyData;//此函数用于创建剑道网格 },

我正在使用.NETWebAPI为我的数据网格获取数据。这个调用是通过如下的ajax调用进行的

$.ajax{ 键入:“GET”, 数据类型:“json”, contentType:application/json;字符集=utf-8, url:ReportURL,//api/AppData/InvoiceReport/10 成功:函数mydata{ console.logmydata; createReportGridmyData;//此函数用于创建剑道网格 }, 错误:函数错误{ 警报错误; }
}; 您可以在web.config文件中添加以下内容

<configuration> 
   <system.web.extensions>
       <scripting>
           <webServices>
               <jsonSerialization maxJsonLength="50000000"/>
           </webServices>
       </scripting>
   </system.web.extensions>
</configuration>

您可以在web.config文件中添加以下内容

<configuration> 
   <system.web.extensions>
       <scripting>
           <webServices>
               <jsonSerialization maxJsonLength="50000000"/>
           </webServices>
       </scripting>
   </system.web.extensions>
</configuration>

您应该将响应流式传输。然后,您可以返回成批发送的数百万行

[HttpGet]
public HttpResponseMessage PushStreamContent()
{
    var response = Request.CreateResponse();

    response.Content = 
        new PushStreamContent((stream, content, context) =>
    {
        foreach (var staffMember in _staffMembers)
        {
            var serializer = new JsonSerializer();
            using (var writer = new StreamWriter(stream))
            {
                serializer.Serialize(writer, staffMember);
                stream.Flush();
            }
        }
    });

    return response;
}
更多信息请点击此处:

您应该对响应进行流式处理。然后,您可以返回成批发送的数百万行

[HttpGet]
public HttpResponseMessage PushStreamContent()
{
    var response = Request.CreateResponse();

    response.Content = 
        new PushStreamContent((stream, content, context) =>
    {
        foreach (var staffMember in _staffMembers)
        {
            var serializer = new JsonSerializer();
            using (var writer = new StreamWriter(stream))
            {
                serializer.Serialize(writer, staffMember);
                stream.Flush();
            }
        }
    });

    return response;
}
更多信息请点击此处:

检查webforms解决方案的Web.config。我打赌那里一定有背景。这听起来像是配置问题。除了你已经知道的大量数据之外,我怀疑web.config是否有任何可以避免内存不足错误的设置。。。虽然我可能错了。web.config设置了json限制。。。。我正在使用JSON.NET序列化对象。我知道的数据很多。当它可以生成200K条记录时,为什么不进一步呢?我们可以了解如何从Web Api流式传输这些大数据吗?请查看webforms解决方案的Web.config。我打赌那里一定有背景。这听起来像是配置问题。除了你已经知道的大量数据之外,我怀疑web.config是否有任何可以避免内存不足错误的设置。。。虽然我可能错了。web.config设置了json限制。。。。我正在使用JSON.NET序列化对象。我知道的数据很多。当它能产生20万条记录时,为什么不进一步呢?我们能知道如何从Web Api流式传输这些大数据吗?我建议还有一件事,1。仅返回2所需的列。返回一些属性的别名,例如EmployeeName=Ravi,返回为a=Ravi,因为这是供您内部使用的,您知道什么是aOr,您可以将其重新构造为使用列与数据方法:{columns:['name','address','plan','age',data:['bob','canada','sorry',32','john','usa','fantastic',16]}我建议另外一件事,1。仅返回2所需的列。返回一些属性的别名,例如EmployeeName=Ravi,返回为a=Ravi,因为这是供您内部使用的,所以您知道什么是aOr,或者您可以将其重新构造为使用列与数据方法:{columns:['name','address','plan','age',data:['bob','canada','sorry',32','john','usa','fantastic',16]]