我正在开发一个新的 API
,它最终会收到大量的流量。我最初的印象是我想通过我的完整 async
/await
堆栈设置 ConfigureAwait(false)
,但是在尝试之后调试一些 application insights
tracing
我发现如果我使用 ConfigureAwait(false)
HttpContext
中的某些值会丢失>.
任何有高流量 API
经验的人都可以告诉我任何我可能遗漏的东西,这些东西可能会受到 ConfigureAwait(false)
的影响,比如用户是否有可能接收不同用户请求的输出?
在我的 API
中删除所有 ConfigureAwait(false)
语句会有什么影响?
最佳答案
is it possible for a user to receive the output from a different user's request?
实际上,没有。当然,只是通过添加 ConfigureAwait(false)
不会发生这种情况。为此,您需要非常明确地将数据从一个请求传递到另一个请求。
What would be the impact of removing all ConfigureAwait(false) statements in my API?
该 API 无法访问有关当前请求的任何信息,因为就它而言,不会有当前请求。对于 API,这是可取的。 UI 特定代码将与当前请求交互以向 API 提供输入,并能够使用 API 调用的结果更新请求,但 API 本身不会与请求交互。
也就是说,除非你的API是专门设计成UI API的,而且它的设计明确目的是与当前请求交互,在这种情况下,你不想显式地删除关于当前请求的信息使用 ConfigureAwait(false)
。
关于c# - 在具有大量流量的异步 ASP.NET Web API 中,将 ConfigureAwait 设置为 false 会产生什么影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38061349/