我不会深入了解为什么我需要这个,这是内部分析包的一部分,但我的目标是创建一个在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秒钟。
答案 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的其他服务器上设置延迟,但如果您只是在重定向之前尝试导致延迟或超时,则必须支付等待线程的惩罚。