Javascript Angular$http服务为大型JSON响应返回空字符串
数据密集型intranet应用程序使用以下Javascript Angular$http服务为大型JSON响应返回空字符串,javascript,angularjs,json,asp.net-web-api,large-data,Javascript,Angularjs,Json,Asp.net Web Api,Large Data,数据密集型intranet应用程序使用以下angularjspost功能。它调用一个Web API服务,在一个分块流中返回一个大的JSON对象。这对于100Mb的响应非常有效,但当响应达到大约250MB时失败 $scope.refresh = function (){ usSpinnerService.spin("main-grid"); $http.post('/api/Assets/GetLargeJSONResult', $scope.postPayload
angularjs
post功能。它调用一个Web API服务,在一个分块流中返回一个大的JSON对象。这对于100Mb的响应非常有效,但当响应达到大约250MB时失败
$scope.refresh = function (){
usSpinnerService.spin("main-grid");
$http.post('/api/Assets/GetLargeJSONResult', $scope.postPayload
).then(
function successCallback(response) {
$scope.mainGridOptions.api.setRowData(response.data);
$scope.mainGridOptions.api.refreshView();
clearErrorMessage();
},
httpErrorCallback)
.then(refreshGridTwo)
.finally(function () {
usSpinnerService.stop("main-grid");
});
};
在$scope.mainGridOptions.api.setRowData(response.data)行上放置断点代码>显示响应。数据
为空字符串
其他一切都很好。我尝试了各种不同的方法从web服务器返回JSON响应,因此我怀疑问题出在服务器端。我的目标是Windows中的Chrome浏览器
相关请求标题:
- 接受:application/json、text/plain、/
- 接受编码:gzip,deflate,br
- 接受语言:en-US,en;q=0.8
- 连接:保持活力
相关响应标题
- HTTP/1.1200ok
- 缓存控制:没有缓存
- 传输编码:分块
- 内容类型:application/json
- 过期:-1
我知道一个选择是将响应页面分成更小的块。然而,我更愿意在网格中分析数据时保持数据的完整性。我想知道我是否遗漏了什么,因为我可以成功地将非常大的开放式office xml文件(媒体类型“应用程序/八位字节流”)从Web API流式传输到浏览器,而不会出现任何问题 类似的问题:,您是否在web api中实际返回值的位置设置了断点,以确保其序列化正确?我碰到了一个点,它返回了一个序列化错误。Dylan,没有序列化错误。对于相同类型但大约100Mb的对象,它会正确返回。这是因为尺寸的关系。Mike发布的类似问题(谢谢!)都指向一次消耗一块数据流,但似乎没有一种简单的“角度”方法,可能是web服务器设置的限制。您是否尝试过使用外部工具(如curl
、wget
等)访问数据?请检查web.config中为maxAllowedContentLength
设置的值。您也可以检查此链接: