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

时间:2014-05-14 11:31:50

标签: c# asp.net redirect

您好我正在尝试使用计时器每分钟执行一次,在第一分钟他将重定向我的第一页我使用但我在重定向方法中获得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);   
    }
}

2 个答案:

答案 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内运行函数”,该函数将重定向到所需的页面。