重定向和静态方法asp.net不能很好地工作

本文关键字:很好 工作 不能 net 静态方法 asp 重定向 | 更新日期: 2023-09-27 18:03:22

嗨,我试图使用计时器来执行它每分钟,在第一分钟,他会重定向我在我的第一页,我使用的,但问题是,我得到一个空的referencexpect在重定向方法

public partial class wait1 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        System.Timers.Timer t = new System.Timers.Timer(6000);
        t.AutoReset = true;
        t.Elapsed += new System.Timers.ElapsedEventHandler(t_Elapsed);
        t.Start();
    }
    private static void t_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
    {
        HttpContext.Current.Response.Redirect("~/Default.aspx", false);   
    }
}

重定向和静态方法asp.net不能很好地工作

WebForms(即ASP.NET)应用程序与WinForms应用程序不同。因为网络的基本架构是无状态的。这意味着它们在请求/响应场景中工作——客户端发送一个HttpRequest发送给web服务器,web服务器处理HttpRequest并返回一个http请求HttpResponse。在HttpResponse被发送到客户端之后,服务器和客户端之间没有任何其他事情发生,直到/除非客户端返回另一个HttpRequest。

当客户端向aspx页面发出请求时,page对象通过预定义的生命周期触发事件,如Page_Load等。最后一段这个预定义的生命周期包括将HttpResponse发送到客户机,然后卸载该页。一旦页面被卸载,它就消失了。

使用

ClientScript.RegisterStartupScript(GetType(), "redirect",
"parent.location.href='Default.aspx';");

代替重定向响应

你根本不能那样做。一旦你向服务器请求一个网页,并且渲染完成后,客户端就不再连接到服务器了。

这意味着只有客户端(Javascript)可以执行操作。

使用JavaScript设置超时时间:

<script>
  setTimeout(function(){window.location='...';)}, 6000);
<script>

这是告诉浏览器:"在6000ms内运行该函数",该函数正在重定向到所需的页面。