如何在x秒内延迟HTTP响应?

时间:2011-10-10 20:30:30

标签: c# asp.net multithreading http

我不会深入了解为什么我需要这个,这是内部分析包的一部分,但我的目标是创建一个在2秒后返回重定向的ASP.NET页面。

我遇到的问题是使用Thread.Sleep(2000);将阻止我的一个ASP.NET ThreadPool线程。据我所知,这是非常浪费的,因为线程创建并不便宜,我需要这台服务器来处理尽可能多的同时连接。

那么,在至少 2秒之后,将HTTP GET返回到我的页面的最佳方式是什么(超过2秒没有问题,它不能在其中)。

    protected void Page_Load(object sender, EventArgs e)
    {
        Thread.Sleep(2000);
        Response.Redirect(RedirectUri);
    }

修改

我应该澄清一下,请求的页面实际上是作为图像请求的,因此无法返回HTML。它会像这样使用:

    <img src="http://hostname/record.aspx"/>

重定向到实际图像需要2秒钟。

4 个答案:

答案 0 :(得分:5)

您可以在标记本身上执行此操作,您可以输入类似的内容:

<head>
   <meta http-equiv="refresh" content="3; URL=otherpage.aspx">
</head>

答案 1 :(得分:3)

您可以实施IHttpAsyncHandler。请参阅MSDN

答案 2 :(得分:0)

在JS中执行:

setTimeout(function() {
   $.ajax({url: './script.aspx'});
},2000);

答案 3 :(得分:0)

没有办法在不占用线程的情况下延迟程序执行。理论上,您可以在发生Re-Direct的其他服务器上设置延迟,但如果您只是在重定向之前尝试导致延迟或超时,则必须支付等待线程的惩罚。