有没有办法在保持实例 运行 的同时 return 从 API 调用 ASP.NET 的响应?

Is there a way to return a response from an API call to ASP.NET while keeping the instance running?

我正在使用 ASP.NET 编写 API,并且我有一些来自不同端点的可能很长的 运行 代码。该系统使用 CQRS 和事件溯源。命令进入终点,然后使用 MediatR 作为事件发布。然而,处理程序可能很长 运行。由于一些进来的请求可能会被发送到多个处理程序。此过程可能需要比 AWS 在 return 输入错误代码之前允许的 12 秒更长的时间。

有没有办法 return 向调用者返回一个响应,说明事件已创建,同时仍在继续该过程?也就是说,启动一个单独的任务来执行长 运行 段代码,该任务还会捕获并记录错误。然后 return 一个值返回给用户说事件已经成功创建?

我相信 ASP.NET 每次调用时都会启动一个新实例,旧实例是否会在 returned 值时死亡,从而终止任务?

这里我可能有很多地方是错的,这是我从互联网上收集的知识,但我可能误解了一些文章。

谢谢。

如果新线程是 运行 长操作,它将保持“open/live”直到完成。您还可以将应用程序池配置为始终处于活动状态。

有很多框架可以处理像 Hangfire 这样的 运行 长任务。

为了让用户了解任务的最新状态,您可以使用 SignalR 将通知推送到 UI

是的,您应该将 long-running 任务传递给后台进程,并将 return 传递给用户。任务完成后,使用适合您站点的任何机制通知用户。

但是不要开始新线程,你想要的是为此有一个 ,并用它来管理你的请求。