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

时间:2016-06-27 19:01:05

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

我正在开发一个新的API,最终会收到大量的流量。我最初的印象是,我希望通过我的完整ConfigureAwait(false) / async堆栈设置await,但在尝试调试某些application insights tracing之后我发现如果使用HttpContextConfigureAwait(false)中的某些值会丢失。

任何具有高流量API经验的人都可以告诉我我可能遗失的任何其他可能受到ConfigureAwait(false)影响的影响用户是否有可能从其他用户的请求接收输出?

删除ConfigureAwait(false)中的所有API语句会产生什么影响?

1 个答案:

答案 0 :(得分:5)

  

用户是否可以从其他用户的请求中接收输出?

实际上,没有。当然,通过添加ConfigureAwait(false),这不会发生 。您需要非常明确地将数据从一个请求传递到另一个请求才能执行此操作。

  

在我的API中删除所有ConfigureAwait(false)语句会有什么影响?

该API无法访问有关当前请求的任何信息,因为就其而言,将不会有当前请求。对于API,这是可取的。 UI特定代码将与当前请求交互以向API提供输入,并且能够使用API​​调用的结果更新请求,但API本身不会与请求进行交互。 / p>

也就是说,除非您的API专门设计为UI API,并且其设计目的是与当前请求进行交互,在这种情况下,您不希望明确删除有关ConfigureAwait(false)的当前请求的信息。