Long 运行 Task(由于不正确的异步调用导致的死锁情况)
Long running Task (Deadlock situation because of incorrect async call)
我有一个通知项目,它通过电子邮件向用户发送 Excel 报告。为此,通知项目调用项目 A api 端点,项目 A 调用项目 B 端点,项目 B 端点从 MSSQL 数据库调用存储过程。依次调试所有这些后,我发现它一直工作到第 4 步。项目 B 具有来自数据库的数据。但它不会返回带有数据的项目 A。结果,我的 Notification 项目中出现了“Long 运行 time task”消息。我一直试图找出背后的原因,但我做不到。我已经在邮递员中单独测试了项目 A api 端点和项目 B 端点。一切正常。即使仅在项目 A 和 B 之间进行通信也可以。但是当任务从 Notification 项目开始时它停止工作。此时Notification项目中的“EmailService_Interval”配置为1分钟。我已经延长到5分钟,但我仍然有同样的问题。有人可以指出问题背后的原因并帮助我提出建议。提前致谢!
这是一个死锁问题,我的理解。通知项目同步调用项目A,项目A异步调用项目B。调试后发现,Notifcation通过同步方式下的PostAsJsonAsync调用Project A。重构并使方法正确异步后,现在一切正常。感谢@Fildor 的评论,这些评论有助于朝这个方向发展。
我有一个通知项目,它通过电子邮件向用户发送 Excel 报告。为此,通知项目调用项目 A api 端点,项目 A 调用项目 B 端点,项目 B 端点从 MSSQL 数据库调用存储过程。依次调试所有这些后,我发现它一直工作到第 4 步。项目 B 具有来自数据库的数据。但它不会返回带有数据的项目 A。结果,我的 Notification 项目中出现了“Long 运行 time task”消息。我一直试图找出背后的原因,但我做不到。我已经在邮递员中单独测试了项目 A api 端点和项目 B 端点。一切正常。即使仅在项目 A 和 B 之间进行通信也可以。但是当任务从 Notification 项目开始时它停止工作。此时Notification项目中的“EmailService_Interval”配置为1分钟。我已经延长到5分钟,但我仍然有同样的问题。有人可以指出问题背后的原因并帮助我提出建议。提前致谢!
这是一个死锁问题,我的理解。通知项目同步调用项目A,项目A异步调用项目B。调试后发现,Notifcation通过同步方式下的PostAsJsonAsync调用Project A。重构并使方法正确异步后,现在一切正常。感谢@Fildor 的评论,这些评论有助于朝这个方向发展。