asp.net-core - 在 .Net Core 中,如果调用者超时/关闭连接,api 中的请求会发生什么?
问题描述
我目前有一个使用 .Net Core 创建的 restful api。第三方可以调用我的 api,并且在返回响应之前从我的 api 进行一些额外的调用。
在第三方请求超时/他们取消请求的情况下,.net core api 中的请求会发生什么。它会继续保持活动状态并返回响应,还是线程/调用会停止?
如果它会停止,我如何确保不会发生这种情况?
解决方案
这取决于您的实施。
您可以将 a 注入CancellationToken
每个控制器端点并使用它来检查请求是否已被取消。
默认情况下,当浏览器取消请求时,将从服务器接收该信息并请求取消。RequestAborted
然后HttpContext
在每个请求中的可用或通过IHttpContextAccessor
控制器端点的外部设置该标志。
之前的 ASP.NET Core 2.0 在使用 IIS 作为反向代理时存在问题。它不会承认请求的取消。
一些资源:
https://andrewlock.net/using-cancellationtokens-in-asp-net-core-mvc-controllers/
https://dev.to/joaofbantunes/using-cancellation-tokens-on-aspnet-core-mvc-actions-57hi
推荐阅读
- tensorflow - tensorflow_lite Prelu 不支持 dims->size = 2
- ios - 动画 tableview 高度约束,但动画正在跳跃
- mysql - 拥有多个地址表是个好主意吗?
- java - 在 liferay 中使用 commons-fileupload 无法正确解析请求
- node.js - 为什么将 WSDL 文件传递给肥皂服务器?
- sql - 在 Oracle SQL 中使用另一个表中的数据创建一个新表
- javascript - Javascript:将数组转换为 CSV 格式并复制到剪贴板
- php - PHP cannot connect to mysql through python
- corda - 如何在corda api中使用post而不是put?
- unity3d - Unity NetworkDiscovery,使用“使用 NetworkManager”?