【发布时间】:2018-12-24 20:40:26
【问题描述】:
问题:
我正在使用 .NET 类 HttpClient 向端点 URL 发出请求。
我的代码:
using (HttpClient apiClient1 = new HttpClient())
{
apiClient.GetAsync(apiUrl).Result;
}
已识别问题:
如果我使用using 块,我将打开多个连接,导致socketExceptions。
将我上面的代码更改为:
public class RequestController: ApiController
{
private static HttpClient apiClient = new HttpClient();
[HttpPost]
public dynamic GetWebApiData([FromBody] ParamData params)
{
var resultContent = apiClient.GetAsync(apiUrl).Result.Content;
return Newtonsoft.Json.JsonConvert.DeserializeObject<object>(resultContent.ReadAsStringAsync().Result);
}
}
上述代码将HttpClient改成static后的结果如下:
只建立了一个连接。
对于每个请求,我正在寻找减少 200 毫秒的时间 响应时间。
我需要什么:
我想通过高速响应向端点发起至少 50 个并发呼叫。
请帮我解决这个问题。
【问题讨论】:
-
您需要阅读并理解 async/await 的基础知识。如果你这样做了,你的问题就会得到解答。
-
另外,您如何进行并发呼叫?
-
@GabrielLuci 我通过内部 WebApi 方法“GetWebAPidata()”调用,然后启动 HttpClient
-
@IanKemp,我的问题不会得到回答,除非并且直到我们可以将最佳方法应用于这种通用场景,我们需要在更短的时间内发出多个端点请求。我正在整理问题出在哪里。这就是为什么我在这个论坛上问这个问题,有人帮我摆脱。这只是讨论。对不起,如果我错了。
-
是的,但该方法只发出 一个 请求。您如何同时调用它 50 次?该代码同样重要。
标签: c# rest dotnet-httpclient