我使用PowerShell脚本和.NET Core应用程序将大约50k行插入数据库(App 1(PowerShell)将数据发送到App 2(.NET Core),其中id插入数据)。
我正在使用实体框架,我已经在App 2中实现了一种机制,以便更快地插入,具体内容如下:Fastest Way of Inserting in Entity Framework
插入需要一些时间,但是在将所有数据正确插入数据库后,它会完成。查询运行大约4分钟。
但是,App 1返回通用的“HTTP错误502.3 - 错误的网关”。即使在将所有数据插入数据库之前,也会返回此响应。所以App 2只发回一个错误,但db操作继续,好像什么也没发生。
所以问题是,db插入工作正常,但我无法在App 1中知道,因为我每次都得到的是一般错误。
我尝试在两个应用程序中增加IIS超时,会话超时,读取IIS日志和NET Core生成的应用程序日志。没有成功。
如何让App 2等到查询完成后才能获得正确的响应?
.NET Core版本是1.0.0-preview2-003121
Powershell请求:
$post = Invoke-WebRequest -Uri ([string]$ApiUrl+$moduleApi) -Method Post -ContentType "application/json; charset=utf-8" -Body $json -Headers @{'ClientID' = "$clientID"; "Authorization"="Bearer $encryption"} -ErrorVariable errorMsg -UseBasicParsing -TimeoutSec 600
答案 0 :(得分:5)
将requestTimeout
增加到超过四分钟的时间。
ASP.NET Core Module configuration reference
requestTimeout
可选的时间跨度属性。
指定ASP.NET核心模块等待来自监听
%ASPNETCORE_PORT%
的进程的响应的持续时间。默认值为" 00:02:00"。
答案 1 :(得分:1)
将requestTimeout设置为0 - 这意味着它将基本上无限期地等待,直到数据库完成。客户端只是不想等待数据库完成,但即使抛出错误,数据库也会继续。