asp.net页面在响应发送之前关闭

时间:2012-01-02 19:57:25

标签: asp.net

如果用户在收到回复之前关闭了长时间运行的页面,会发生什么?

页面是否继续在其主题中运行,或者在用户关闭页面后是否终止该主题?

2 个答案:

答案 0 :(得分:3)

页面将继续执行 - 服务器无法告知浏览器不再存在。 HTTP无国籍的后果之一。

答案 1 :(得分:1)

Oded是正确的,在用户浏览或关闭浏览器窗口后,请求会继续处理很长时间。为了好玩,试试这个:

protected void Page_Load(object sender, EventArgs e)
{
    for (int count = 0; count < 100; count++)
    {
        Debug.WriteLine("Processing {0}, IsClientConnected={1}", count, Response.IsClientConnected);
        Response.Write(string.Format("Processing {0}<br/>", count));
        Response.Flush();
        Thread.Sleep(1000);
    }
    Response.Write("<h1>Done<h1/>");
}

请求在导航后继续处理,但IsClientConnected属性更改为false。你可以使用它,但你必须编写代码才能利用它,通常是长时间运行的请求。

Processing 0, IsClientConnected=True
Processing 1, IsClientConnected=True
Processing 2, IsClientConnected=True
Processing 3, IsClientConnected=True
Processing 4, IsClientConnected=True
Processing 5, IsClientConnected=True
Processing 6, IsClientConnected=True
Processing 7, IsClientConnected=True
Processing 8, IsClientConnected=True
Processing 9, IsClientConnected=True
Processing 10, IsClientConnected=True
Processing 11, IsClientConnected=True
Processing 12, IsClientConnected=True
Processing 13, IsClientConnected=False
Processing 14, IsClientConnected=False
Processing 15, IsClientConnected=False
Processing 16, IsClientConnected=False
Processing 17, IsClientConnected=False