在.Net Core中,如果调用方超时/关闭连接,在api中会发生什么请求?

时间:2019-01-21 14:15:42

标签: asp.net-core .net-core asp.net-core-webapi

我目前使用.Net Core创建了一个宁静的api。第三方可以调用我的api,并在返回响应之前通过我的api进行一些其他调用。

在第三方请求超时/他们取消请求的情况下,.net核心api中的请求发生了什么情况。它会继续保持生命并返回响应,还是线程/调用会停止?

如果它将停止,我如何确保不会发生这种情况?

1 个答案:

答案 0 :(得分:4)

这取决于您的实现。

您可以向每个控制器端点注入CancellationToken并使用它来检查请求是否已取消。

默认情况下,当浏览器取消请求时,将从服务器接收到该信息,并且正在请求取消。然后,在每个请求中可用的RequestAborted上或通过控制器端点外部的HttpContext设置标志IHttpContextAccessor

在ASP.NET Core 2.0之前的版本中,使用IIS作为反向代理时存在问题。它不会识别请求的取消。

一些资源:

https://odetocode.com/blogs/scott/archive/2018/09/12/cancellationtokens-and-aborted-asp-net-core-requests.aspx

https://andrewlock.net/using-cancellationtokens-in-asp-net-core-mvc-controllers/

https://dev.to/joaofbantunes/using-cancellation-tokens-on-aspnet-core-mvc-actions-57hi

https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.http.httpcontext.requestaborted?view=aspnetcore-2.2