当api发送大量数据时,angular $ http.get返回空数据

时间:2016-12-23 14:18:49

标签: angularjs asp.net-web-api

我的api控制器看起来像:

[System.Web.Http.HttpGet]
[System.Web.Http.HttpPost]
public DataTable Get()
{
   DataTable t = new DataTable("t");
   using (SqlDataAdapter adapter = new SqlDataAdapter(cmd))
   {                    
     adapter.Fill(t);                 
   }
  return t;
}

我的angular api服务请求来自api的数据:

// contoller
$scope.getReport = function () {
        apiService.post('/api/test/get', null,
        getReportLoadCompleted,
        getReportLoadFailed);
}

 function getReportLoadCompleted(result) {
        $scope.report = result.data;
}

// api service
 function post(url, data, success, failure) {
        return $http.post(url, data)
                .then(function (result) {
                    success(result);
                }, function (error) {
                    if (error.status == '401') {

                        $rootScope.previousState = $location.path();
                        $location.path('/login');
                    }
                    else if (failure != null) {
                        failure(error);
                    }
                });
    }

当api返回60列和200.000行内的数据时,它没有失败,result.data是200.000行的数组。 但是当api返回60列和250.000行内的数据时,它没关系 result.data是空字符串。

有什么问题? 有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您应该配置终端app.config。例如;

<bindings>
    <basicHttpBinding>
        <binding name="basicHttp" allowCookies="true"
                 maxReceivedMessageSize="20000000" 
                 maxBufferSize="20000000"
                 maxBufferPoolSize="20000000">
            <readerQuotas maxDepth="32" 
                 maxArrayLength="200000000"
                 maxStringContentLength="200000000"/>
        </binding>
    </basicHttpBinding>
</bindings>