C#Web Api-处理入站请求';以便接收它们';

本文关键字:Api- 请求 处理 C#Web | 更新日期: 2023-09-27 18:20:16

我编写了一个web api项目,作为两个子系统之间的桥梁/网关。

我需要确保入站请求按照接收顺序进行处理。我不太熟悉web api的工作原理,我担心的是:

  1. 一个入站请求进入,一个操作开始并持续30秒
  2. 在第一个请求被处理的5秒内,第二个请求被接收并立即被处理

引起这种担忧的原因是,用户可能会提交对记录的更新,该更新将传播到另一个子系统。然而,该用户可以出于任何原因提交第二个请求。我需要确保先完成第一个请求,然后再执行后续请求。因此,当成千上万的请求涌入时,这只是一种先到先得的处理方式。

有人知道web api是否已经像这样工作了吗?或者我需要做什么才能得到这种行为?

C#Web Api-处理入站请求';以便接收它们';

您可以通过使用全局静态标志来实现这一点。像这样声明一个变量

static bool bInProcess = false;

现在,当您收到请求时,将此变量设置为true,并执行您的流程。一旦您完成了流程,请将此变量设置为false;在处理过程中,如果出现另一个请求,请检查该变量是否为真,然后将当前线程置于睡眠模式1秒钟,并检查直到为真。或者您可以返回另一个进程正在运行的错误。

//Sample for loop to Queue 2nd request 
while (bInProcess )
            {
                Thread.Sleep(1000);
            }

在这个代码中你必须非常小心。在"WebApiConfig"类中添加messagehandler类,并在该类中编写此代码。使用这个方法"config.MessageHandlers.Add"。我很久以前就这么做了,所以我知道它有效。