Response.redirect响应在上下文中不可用.如果与计时器一起使用

本文关键字:如果 计时器 一起 响应 redirect 上下文 Response | 更新日期: 2023-09-27 18:19:56

我试图在页面中显示加载动画6秒,然后重定向页面。

若我在Page_Load中使用Response.Redirect(@"~'WorklistPage.aspx", true);,它会按预期将页面重定向到工作列表页面。

但是当我试图延迟重定向函数时,它会抛出一个异常。

下面是我尝试过的,但没有成功。我收到response is not available in context错误

protected void Page_LoadComplete(object sender, EventArgs e)
        {
            aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
            aTimer.Interval = 6000;
            aTimer.Enabled = true;
            //timer = new System.Threading.Timer(obj => { Response.Redirect(@"~'WorklistPage.aspx", true); }, null, 3000, System.Threading.Timeout.Infinite);
            //Response.Redirect(@"~'WorklistPage.aspx", true);

        }
        private void OnTimedEvent(object source, ElapsedEventArgs e)
        {
            aTimer.Enabled = false;
            //HttpContext.Current.Response.Redirect(@"~'WorklistPage.aspx");
            //Response.Redirect(@"~'WorklistPage.aspx",true);
            //Response.Redirect(@"~'WorklistPage.aspx",false);
            //Server.Transfer(@"~'WorklistPage.aspx", true);
        }

为什么我会出现错误,如何修复?

Response.redirect响应在上下文中不可用.如果与计时器一起使用

简单的答案是,如果你想在页面加载六秒钟后自动重定向浏览器,你需要用JavaScript而不是在服务器上执行。在返回http响应6秒后,服务器上的代码后面的线程如何告诉浏览器重定向到另一个页面?你可以用信号器做这种事情,但对于一个简单的重定向来说,这是一个巨大的过度。

从ServerSide调用延迟的网页是不可能的,u必须使用java脚本。。。。你必须使用这样的东西例如:

protected void Page_LoadComplete(object sender, EventArgs e)
{
    ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "success", "alert('Submitted Successfully.'); setInterval(function(){location.href='http://www.google.com';},3000);", true);
}
相关文章: