在持续时间内延迟ASP.NET响应而不阻塞工作线程

在持续时间内延迟ASP.NET响应而不阻塞工作线程,asp.net,Asp.net,因此,我一直在阅读有关通过使用指数级增加的延迟来限制来自IP地址或针对用户的登录请求的内容。这是一种人为的延迟,服务器不会响应,实际上是在等待响应。到目前为止,我还没有发现什么可以很好地实现这一延迟 我的选择是: Thread.Sleep()-它可以工作,但DDOS攻击将很容易吞噬ASP.NET中所有可用的工作线程 或 返回类似于429的内容(请求太多),直到延迟过期 因此,有两种不同的方法,一种是立即回复并将工作交给客户端重试,另一种是服务器处理请求并延迟响应 理想情况下,我希望使用后者,让服

因此,我一直在阅读有关通过使用指数级增加的延迟来限制来自IP地址或针对用户的登录请求的内容。这是一种人为的延迟,服务器不会响应,实际上是在等待响应。到目前为止,我还没有发现什么可以很好地实现这一延迟

我的选择是:

Thread.Sleep()-它可以工作,但DDOS攻击将很容易吞噬ASP.NET中所有可用的工作线程

返回类似于429的内容(请求太多),直到延迟过期

因此,有两种不同的方法,一种是立即回复并将工作交给客户端重试,另一种是服务器处理请求并延迟响应

理想情况下,我希望使用后者,让服务器延迟响应。根据以下回答,我尝试了HttpAsyncHandler:

HttpAsyncHandler中发生了线程休眠,但问题是响应已经返回到客户端。答案是我应该在让响应返回之前阻止WaitHandle,但我不知道如何做,从我所看到的情况来看,我仍然会阻止worker线程处理另一个请求

这就好像我需要工作线程来拾取新请求和拾取延迟请求以发出响应。在ASP.NET Web表单中可以这样做吗?MVC AsyncController看起来非常适合我的需要,但我不能在这个实例中使用它