Asp.net core 使用ASP.NET Core等待用户输入的正确方法是什么?

Asp.net core 使用ASP.NET Core等待用户输入的正确方法是什么?,asp.net-core,task,server-side,pause,Asp.net Core,Task,Server Side,Pause,实现等待服务器触发的用户输入的正确方法是什么 让我们假设以下场景: 用户发送请求-> 在执行此请求期间,需要额外数据或简单确认-> 暂停当前执行,生成超时的令牌,以及要发送到客户端的内容-> 在客户端会出现一个弹出窗口-> 用户完成所需的任务后,数据连同令牌一起发送到服务器,该令牌使用用户提供的其他数据恢复上一个任务的执行 我已经在等待此令牌的新线程中使用委托回调实现了这一点,但我认为这不是正确的方法,还有其他方法吗 此外,我知道它通常分为两个操作,一个用于请求,另一个用于确认请求,但这是不可能

实现等待服务器触发的用户输入的正确方法是什么

让我们假设以下场景:

用户发送请求->

在执行此请求期间,需要额外数据或简单确认->

暂停当前执行,生成超时的令牌,以及要发送到客户端的内容->

在客户端会出现一个弹出窗口->

用户完成所需的任务后,数据连同令牌一起发送到服务器,该令牌使用用户提供的其他数据恢复上一个任务的执行

我已经在等待此令牌的新线程中使用委托回调实现了这一点,但我认为这不是正确的方法,还有其他方法吗

此外,我知道它通常分为两个操作,一个用于请求,另一个用于确认请求,但这是不可能的,因为系统非常动态,大多数服务器端操作工作流都是在数据层中定义的。

使用存储在服务器上的有状态对象解决任务(感谢@Tseng),每当数据丢失时,就会存储已经存在的数据,将令牌和所需的数据键、生成表单的UI脚本等令牌一起发送回客户端

然后再次调用请求,将新数据添加到此存储对象,并再次尝试该任务,要么成功完成,要么提示输入更多数据

已实施定时处理,作业完成时的处理+每个会话的存储限制已到位,以防止恶意过载


再次感谢

大多数服务器端操作工作流都是在数据层定义的,这会使事情更难管理。这似乎是一种情况,在启动流程之前,客户端是否可以与服务器验证是否需要任何确认或其他数据?@Mt.Schneiders我将尝试研究这种方法,也许我可以使用一些容器对象来获取额外的数据,这些数据将被来回ping,如果需要输入,它将只请求数据,填充此容器并重试。谢谢你应该把它分成两部分。Http是无状态的。当您需要确认时,只需将用户及其传递到请求的所有数据重定向到另一个视图,在该视图中,旧数据位于隐藏字段中,新数据可见(或者只需单击“是/否”按钮进行确认)。然后发送带有附加数据的请求,然后才开始任务。不要自己启动线程,这将损害您的系统的可伸缩性,因为您可以实现一个saga(也称为processmanager)。它是一个有状态的对象/状态机,包含数据。First requests创建传奇并添加一些信息,包括令牌。第二个请求加载现有的saga,传递令牌,然后流程才开始