您好我正在尝试使用计时器每分钟执行一次,在第一分钟他将重定向我的第一页我使用但我在重定向方法中获得null Referencexpection的问题
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);
}
}
答案 0 :(得分:1)
WebForms(即ASP.NET)应用程序与WinForms应用程序不同。因为 网络的基本架构,他们是无国籍的。这意味着 它们在请求/响应场景中工作 - 客户端发送HttpRequest 对于Web服务器,Web服务器处理HttpRequest并发回一个 HttpResponse对象。 HttpResponse发送到客户端后, 除非客户端,否则服务器和客户端之间不会发生任何其他事 发回另一个HttpRequest。
当客户端向aspx页面发出请求时,Page对象会通过 一个预定义的生命周期触发事件,如Page_Load等。最后的 这个预定义的生命周期涉及将HttpResponse发送到 客户端然后卸载页面。一旦页面被卸载,它就消失了。
使用
ClientScript.RegisterStartupScript(GetType(), "redirect",
"parent.location.href='Default.aspx';");
而不是重定向的响应
答案 1 :(得分:0)
你根本做不到这一点。一旦您向服务器请求网页并完成渲染,客户端就不再连接到服务器。
这意味着只有客户端(Javascript)才能采取行动。
使用JavaScript设置超时:
<script>
setTimeout(function(){window.location='...';)}, 6000);
<script>
这告诉更明智的是:“在6000ms内运行函数”,该函数将重定向到所需的页面。