await 不等待休息响应 C# .net Core
await doesn't wait for rest response C# .netCore
我有一个客户端必须进行连续的休息调用,休息调用将执行一些功能并有一个状态。与 运行 rest 调用并行,客户端应每隔几秒轮询一次服务器以检查服务器端进程的状态(以检查服务器是否完成了由于原来的休息电话。
客户有以下调用:
await runMultiScan(scanId, exitActions);
handleExitActions(exitActions);
和runMultiScan
的实现方式如下:
private async Task runMultiScan(Guid scanId, List<Action> exitActions)
{
var client = new RestClient(baseURL);
var request = new RestRequest(@"api/scans", Method.POST);
request.AddJsonBody(new Scan
{
sid = scanId.ToString(),
scanPath = scansParentPath
});
var cancellationTokenSource = new CancellationTokenSource();
await client.ExecuteTaskAsync(request, cancellationTokenSource.Token);
}
与此同时,我有 getStatus 函数,该函数还对服务器进行了休息调用。
奇怪的是,在 "runMultiScan" 中的 rest 调用花了几分钟后,它退出等待并转到 handleExitActions(exitActions);
尽管服务器尚未完成 RestRequest:
[HttpPost]
public void Post([FromBody] ScanData scanInfo)
{
currentScan = new Scan(scanInfo);
currentScan.runScan();
}
而且服务器上的进程还在runScan里面,还没有返回。
这种行为的原因是什么(等待而不是等待 Post 完成)?
不确定,如果我没记错的话,RestClient class 的默认超时设置为 100 秒?所以服务器上的功能需要超过 100 秒,RestClient 超时所以应该是这样。检查服务器有什么问题,潜在的死锁...?
我有一个客户端必须进行连续的休息调用,休息调用将执行一些功能并有一个状态。与 运行 rest 调用并行,客户端应每隔几秒轮询一次服务器以检查服务器端进程的状态(以检查服务器是否完成了由于原来的休息电话。
客户有以下调用:
await runMultiScan(scanId, exitActions);
handleExitActions(exitActions);
和runMultiScan
的实现方式如下:
private async Task runMultiScan(Guid scanId, List<Action> exitActions)
{
var client = new RestClient(baseURL);
var request = new RestRequest(@"api/scans", Method.POST);
request.AddJsonBody(new Scan
{
sid = scanId.ToString(),
scanPath = scansParentPath
});
var cancellationTokenSource = new CancellationTokenSource();
await client.ExecuteTaskAsync(request, cancellationTokenSource.Token);
}
与此同时,我有 getStatus 函数,该函数还对服务器进行了休息调用。
奇怪的是,在 "runMultiScan" 中的 rest 调用花了几分钟后,它退出等待并转到 handleExitActions(exitActions);
尽管服务器尚未完成 RestRequest:
[HttpPost]
public void Post([FromBody] ScanData scanInfo)
{
currentScan = new Scan(scanInfo);
currentScan.runScan();
}
而且服务器上的进程还在runScan里面,还没有返回。 这种行为的原因是什么(等待而不是等待 Post 完成)?
不确定,如果我没记错的话,RestClient class 的默认超时设置为 100 秒?所以服务器上的功能需要超过 100 秒,RestClient 超时所以应该是这样。检查服务器有什么问题,潜在的死锁...?