c# - 通过 ASP.NET CORE WEB API 并发请求和共享 HttpClient
问题描述
如果我们像下面的 SingleHttpClientInstanceController 那样重用 HttpClient ,如果有多个请求进来,而当前请求正在使用共享的 HttpClient,这种情况会阻塞后续请求吗?
我有一个接受请求并调用外部 Web 服务的 Web API,如果调用外部 Web API 块,它会阻止所有即将到来的请求。
public class SingleHttpClientInstanceController : ApiController
{
private static readonly HttpClient httpClient;
static SingleHttpClientInstanceController()
{
httpClient = new HttpClient();
}
// This method uses the shared instance of HttpClient for every call to GetProductAsync.
public async Task<Product> GetProductAsync(string id)
{
var hostName = HttpContext.Current.Request.Url.Host;
var result = await httpClient.GetStringAsync(string.Format("http://{0}:8080/api/...", hostName));
return new Product { Name = result };
}
}
上面的代码来自下面的链接
https://docs.microsoft.com/en-us/azure/architecture/antipatterns/improper-instantiation/
解决方案
推荐阅读
- docker - 我如何运行所有 jenkins 管道步骤,除了 docker 容器中的一个
- c++ - 成员函数定义中的不完整类型
- angular - 长寿命的多播 Observable,每次订阅时都会重新订阅其源
- python - 根据分配的颜色更改字体颜色 - Python
- excel - 使用 Power Query 获取文件夹中 CSV 文件的第一行。在 Excel 中放置
- javascript - 在 HTML 表格中使用 CSS 将复选框字体更改为粗体
- grafana - 如何在表格面板中放置两个不同的指标
- python - 将直方图函数扩展到具有任意间隙的重叠箱和箱?
- r - R中的协整分析:如何从`urca::cajorls`获取相关信息?
- python - 生成语法标签数据向量