我已尽可能多地将代码转换为从旧asp到.net核心的行。在旧的.net代码中它运行良好(在有两个异常的循环中,每个都被正确捕获)但是因为转换为.net核心它不起作用。第二个例外会挂起整个应用程序。
一段代码无效,我认为这是因为异步方法调用发生了死锁。
直接从以前的等价物中翻译代码,代码如下:
//loop at this level - many health checks to carry out
try
{
bool result = await healthCheckable.GetHealthAsync();
}
catch(Exception ex)
{
}
请注意,每次在此方案中执行运行状况检查代码时都会引发异常,因为服务已关闭。
循环第一次正确捕获异常,第二次,代码只是挂在健康服务检查上。
我尝试了.Wait()
,我尝试了.Result;
,我尝试了ConfigureAwait(false)
- 一直到调用树。
此时我不知道下一步该尝试什么。
我很抱歉 - 我的代码太复杂了,无法创建一个可以重现问题的最小代码 - 但是从上面可以看出我应该检查的一系列内容吗?