【发布时间】:2019-11-24 04:27:10
【问题描述】:
我正在使用 VS 2017 重建 C# 应用程序。但是我无法检索超过 3993 条记录,我需要获得 ~180K 才能将它们插入到平面表(SQL db)中
我认为分页方法设计不正确,我不太确定如何修复它,如果我添加大于 4K 的数字,它会崩溃。解决此问题的最佳方法是什么?
这是我们目前所拥有的:
Helper.cs:
{
ItemsDto itemsCollection = null;
HttpClient httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", token);
var uri = string.Format(@"{0}pageSize={1}&page=1", Constants.REQUEST_ENDPOINT, Constants.MAXVALUE);//Constants.MAXVALUE);
uri = uri + "&advancedFilter=__Status__~eq~'Active'";
uri = uri + @"&dynamicColumns=Name,ID,Date,Status,Version,Name,Division";
uri = uri + "&orderDirection=DESC";
HttpResponseMessage response = await httpClient.GetAsync(uri);
if (response == null)
{
throw new Exception("There is no returned request from API");
}
if (response.IsSuccessStatusCode)
{
var responseAsString = await response.Content.ReadAsStringAsync();
itemsCollection = JsonConvert.DeserializeObject<ItemsDto>(responseAsString) ?? new ItemsDto();
}
else
{
throw new Exception("An error request has ocurred: " + response.RequestMessage);
}
if (itemsCollection.Items == null)
{
log.Info("There is no files available");
itemsCollection.Items = new List<Document>();
}
return itemsCollection.Items;
}
App.config:
<add key="IntMaxValue" value="4000" /> //Change pageSize Here
Constants.cs:
public static readonly int MAXVALUE = int.Parse(ConfigurationManager.AppSettings["IntMaxValue"]);
【问题讨论】:
-
也许你没有足够的内存来一次处理那么多?
-
当它崩溃时它给出了什么错误?
-
谢谢@Steven B,这可能是超时问题,我会稍微调查一下,看看如何配置它。
-
@Mikael 错误是“任务被取消。内部异常”我将尝试逐行调试代码,看看是否能看到其他内容。
-
@tana 检查关于该错误的答案here。应该是超时了