HttpClient问题,如何在不同的URI上重用它?
HttpClient问题,如何在不同的URI上重用它?
我在Azure(应用服务)上托管了一个简单的Web应用程序,它调用了两个不同的外部API。昨天我们遇到了预期的大量流量激增,整个系统崩溃了,我现在意识到这是因为我在创建和释放HttpClient的新实例时出了问题,代码如下:
在同一个控制器的另一个方法中,我以同样的方式调用了另一个外部API:
我一直在阅读关于HttpClient和为每个外部API创建一个单例?以及设置不同URI的问题等等,我对如何继续非常困惑。如果我只是删除“using”,它是否有可能解决问题?如果我需要创建一个单例,是否有任何地方可以演示我如何做到这一点,并将其应用到我的场景中?谢谢!
问题:如何重用不同URI的HttpClient?
出现原因:创建新的HttpClient实例会导致应用服务在Azure上抛出502.3错误,因为在高负载下(每秒50+个请求)服务器变得无响应。人们似乎在做的是创建单例并将其注入到控制器中,但是关于在不同URI的控制器调用中如何工作似乎存在一些混淆。
解决方法:在构造函数中创建处理程序和HttpClient实例,并在每次发送请求时调用同一个实例。同时注意检查证书选项、协议和BaseAddress属性是否正确设置。如果需要处理多个站点,不要使用BaseAddress,而是使用适当的默认头部。此外,根据请求量大小和性能要求,可以根据具体情况选择使用字典存储多个HttpClient实例。
以上是关于如何重用不同URI的HttpClient的问题出现原因和解决方法的整理。