c# - 在具有大量流量的异步 ASP.NET Web API 中,将 ConfigureAwait 设置为 false 会产生什么影响?

标签 c# asp.net asp.net-web-api async-await asp.net-web-api2

我正在开发一个新的 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/

相关文章:

C# WinForms - 如何通过另一个窗体从一个窗体的文本框中检索数据?

c# - 如何在 C# 中将空格转换为不间断空格实体

javascript - 每次 GET 调用后,URL 都有 ?_=*Number* 吗?

c# - Web API 2/MVC 5 : Attribute Routing passing parameters as querystring to target different actions on same controller

c# - 如何在 Winform 应用程序中获取 datagridview 特定单元格的值

c# - 如何用单引号做 HtmlTextWriter.WriteAttribute?

c# - 使用 ServiceStack 的 Soap12ServiceClient 将请求对象发送到使用 ServiceStack.Factory 配置的服务时出现 404 错误

c# - ASP.NET MVC3 路由 - 不同区域的相同 URL

asp.net-mvc - Web API 帮助页面未加载文档 XML

c# - 带字符串数组的列表 (List<string[]>)