延迟ASP.NET响应,但不会阻塞工作线程

时间:2012-11-29 16:12:01

标签: asp.net

因此,我一直在阅读来自IP地址或针对用户的限制登录请求的区域,使用指数增加的延迟。这是一个人工延迟,服务器无法响应,有效地坐在响应上。到目前为止,我没有发现很好地实现这种延迟。

我的选择是:

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

返回类似429(Too Many Requests)的内容,直到延迟过期。

所以有两种不同的方法,其中一个立即回复,并将工作提供给客户端再次尝试,或者服务器将坐在请求上并延迟响应。

我理想情况下会选择后者,我让服务器延迟响应。我根据这个答案尝试了一个HttpAsyncHandler:https://stackoverflow.com/a/1614625

我在HttpAsyncHandler中发生了Thread.Sleep,但问题是响应已经回到了客户端。答案说我应该在响应之前阻止WaitHandle,但我不知道如何做到这一点,从我所看到的,我仍然会阻止工作线程在此期间处理另一个请求一定。

就好像我需要工作线程来接收新请求并接收延迟的请求以发出响应。这可以在ASP.NET Web窗体中执行吗? MVC AsyncController看起来非常适合我需要的东西,但我不能在这个例子中使用它。

0 个答案:

没有答案