在.NET Core WebAPI项目中,该事件导致HTTP请求被取消



我有一个常规网站,没有前端框架,只是普通的旧表单,按钮和导航链接,我使用纯JavaScript致电WebApi来保存表单,获取数据等等。

我的webapi使用取消令牌。

是什么导致请求被取消,然后将取消令牌发送到我的WebAPI项目。

我知道我可以手动中止该请求或是否有超时,但是还有哪些其他事情会导致取消发生?

我的主要关心是用户是否填写大型表单,无论出于何种原因,API保存表格的请求要长时间,会导航远离页面,关闭浏览器/TAB调用CAND the cancellation和我的DB Update不会完成吗?

不等待 asyn方法,调用 async void方法,试图在释放原始胎面时在其他线程上执行工作。所有这些问题都是发布呼叫者,然后DI处置为您要求的所有类型。例如,您有一个类

public class SomeProcessor
{
    public async Task ProcessAsync(string payload)
    {
        // some code
        await Task.Delay(1000); // some async action
        // some more code
    }
    public async void ProcessAsyncVoid(string payload)
    {
        // some code
        await Task.Delay(1000); // some async action
        // some more code
    }
}

然后,您将其注入控制器,然后以此方式使用:

_processor.ProcessAsync(payload);

或以下:

_processor.ProcessAsyncVoid(payload);

不是 await it。您的控制器方法将返回,DI将处置SomeProcessor类杀死您的逻辑。在日志中,您将其视为OperationCanceledException

最新更新