用户停止页面加载时取消请求处理

时间:2016-02-27 09:20:18

标签: c# asp.net-web-api asp.net-web-api2

我在我的Aspnet 5(Aspnet Core)WebAPI控制器中有一个操作,虽然被请求可能需要很长时间,但即使用户已取消加载,它也会运行到最后。对于aspnet中的请求或conroller / httpContext中的任何事件,是否有取消令牌的变体,这可以帮助我在用户不需要其结果时停止操作?

如果使用cancellationToken,它永远不会改变其状态:

[HttpGet]
public async Task<string> Get(CancellationToken cancellationToken)
{
    await Task.Run(() =>
    {
        while (!cancellationToken.IsCancellationRequested) ;
        return;
    });
    return "hi";
}

,也传递给令牌的Register方法的回调也从未被调用过。

1 个答案:

答案 0 :(得分:0)

没有可靠的事件来处理浏览器加载停止。 IE有document.onstop事件,其他浏览器不支持它。

也许您可以尝试类似的方法,将您的ajax调用放在window.onload事件中。 完全加载DOM和页面中使用的其他资源后,onload事件将触发。

因此,如果用户在完全加载之前停止页面加载,window.onload事件将不会被触发,因此您的ajax调用将不会被执行。