重定向和静态方法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);
}
}
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内运行该函数",该函数正在重定向到所需的页面。