如果他们在通过页面上的按钮启动进程后关闭浏览器页面,该进程是否会一直运行直到完成或者它会死掉?如果是这样我怎么能让它安全死?
答案 0 :(得分:4)
页面将继续处理。如果要终止处理,可以检查HttpResponse.IsClientConnected属性并在客户端不再连接时结束处理。
来自MSDN的示例:
private void Page_Load(object sender, EventArgs e)
{
// Check whether the browser remains
// connected to the server.
if (Response.IsClientConnected)
{
// If still connected, redirect
// to another page.
Response.Redirect("Page2CS.aspx", false);
}
else
{
// If the browser is not connected
// stop all response processing.
Response.End();
}
}
但是,假设能够检查财产。如果您进行长时间运行的同步呼叫,那么您将无法检查该属性。如果是这种情况,您可以异步执行它或将长时间运行的调用分解为单独的较小调用,您可以在进一步处理之前检查状态。
答案 1 :(得分:1)
我想说,这完全取决于流程以及您如何编写解决方案。
但根据我的经验,浏览器和服务器之间没有直接连接。它通过使用会话状态进行模拟。所以一旦这个过程开始,我会说是的,它将一直持续到它将响应发送回客户端。无论客户是否在那里接收它都是另一回事。