ASP.Net:如何在浏览器断开连接时停止页面执行?

ASP.Net:如何在浏览器断开连接时停止页面执行?,asp.net,page-lifecycle,Asp.net,Page Lifecycle,如果浏览器请求ASP.Net页面,然后用户单击“停止”或导航离开,我想浏览器会关闭连接,ASP.Net可能会停止执行。我认为情况并非如此,因为在我测试这个时没有调用Dispose()。是否需要知道浏览器/客户端何时已断开连接,然后停止页面执行?您可以检查IsClientConnected if (!Response.IsClientConnected){ HttpContext.Current.Response.End(); return; }

如果浏览器请求ASP.Net页面,然后用户单击“停止”或导航离开,我想浏览器会关闭连接,ASP.Net可能会停止执行。我认为情况并非如此,因为在我测试这个时没有调用Dispose()。是否需要知道浏览器/客户端何时已断开连接,然后停止页面执行?

您可以检查
IsClientConnected

    if (!Response.IsClientConnected){
        HttpContext.Current.Response.End();
        return;
    }

当然,但在长时间运行的过程中,这是行不通的。比如说,页面正在执行某个SQL查询,而用户却导航离开了——捕捉到这个信息并终止SqlConnection会很好,这样SQL服务器就不会徒劳地处理该查询了。@Josh M。这个查询有多长?一秒钟?10秒?SQL查询需要处理哪些内容?是的,一般来说,除了此功能外,没有一个触发器可以在您思考时查看用户是否未连接。如果你有太大的工作要做,你可以不时检查,以避免长时间的处理。@Josh Pages通常只需不到一秒钟的时间就可以完成这个过程。需要花费更长时间的页面需要特别注意,可能还有一个进度条-可能会这样一次又一次地检查。查询可能需要3秒、10秒或更长时间-看起来(通常)如果用户不再关心结果,能够取消查询会很好。@Josh你能每2秒检查一次吗?如果用户未连接,则停止连接。(可能使用线程)。