我正在通过HttpWebRequest
从远程服务中读取数据。收到的JSON消息暂时存储为List(Of Customer)
,然后使用Dapper插入Azure SQL中的表中。应用程序作为ASP.NET运行,并在Azure App Service中托管.Net Framework 4.6.2。所以这是两个步骤:
一个。通过HTTP请求获取数据并存储为List(Of Customer)
B中。使用Dapper将List(Of Customer)
插入Azure SQL中的Customer表。
这一点正常,直到我尝试在同一过程中读取并插入另一组数据:
℃。通过HTTP请求获取数据并存储为List(Of Payment)
d。使用Dapper将List(Of Payment)
插入Azure SQL中的Payment表。
问题:第二个HTTP请求(步骤C)总是超时。我做了多次测试。以下是我的观察:
ServicePoint.ConnectionLimit
和System.Net.ServicePointManager.DefaultConnectionLimit
,但已将其设置为Int32.MaxValue
。这演示了SQL插入和后续HTTP请求之间的一些链接。然而,这似乎很难相信,我会指出一些更普遍的问题,如内存泄漏等。
编辑:
尝试进一步调查。使用原始方案A + B + C + D,一旦第一个HTTP请求返回的行数有限,它就开始工作了。最初远程服务返回18.000行。似乎10.000是开始工作时的数字(某些执行仍然运行时出错)。在步骤A中有9.000行代码运行没有任何问题。自然地,步骤B中的SQL插入需要更少的时间。
答案 0 :(得分:0)
在步骤A和C中为Web服务请求设置HttpWebRequest.KeepAlive = False
解决了问题。
然而,仍然不知道为什么它会有所帮助,以及潜在问题的原因是什么。