【发布时间】:2016-10-29 21:41:28
【问题描述】:
我正在开发一个新的API,它最终会获得大量流量。我最初的印象是我想通过完整的async/await 堆栈设置ConfigureAwait(false),但在尝试调试一些application insightstracing 之后,我发现@987654327 中的某些值如果我使用ConfigureAwait(false),@ 会丢失。
任何拥有高流量 API 经验的人都可以告诉我我可能遗漏的任何其他可能会受到 ConfigureAwait(false) 影响的信息吗?比如用户是否可以接收来自不同用户请求的输出?
删除我的API 中的所有ConfigureAwait(false) 语句会有什么影响?
【问题讨论】:
-
“用户是否可以接收来自不同用户请求的输出”将是一个巨大的错误。而且我不相信 ConfigureAwait 打破了这一点。我不知道您正在寻找什么样的明确答案,但是除非您有一些特殊的线程关联情况(这不太可能),否则 AFAIK .ConfigureAwait(false) 几乎是 webapi 的最佳实践
-
-
这是合乎逻辑的,如果没有 configure(false),它需要保留额外的信息来维护线程亲和性——然后可以通过配置清除这些信息。如果您仍然担心,我建议您深入了解被删除的确切内容。
标签: c# asp.net asp.net-web-api async-await asp.net-web-api2