0

我必须发出多个 Http 发布请求(几百个或更多),而不是像 SLA 那样等待任何响应。在不等待这些响应的情况下,我需要从我的 Web API 发回响应(在执行提到的多个 HTTP 请求之前,我从另一个 API 获取数据并需要返回)。

我环顾四周,发现不等待响应的“即发即弃”实现。我不确定这种做法是否正确,并且由于我在没有等待并行触发和忘记请求的情况下返回,HttpClient 将如何处理?

HttpClient client = new HttpClient();

var CompositeResponse = client.GetAsync(_SOMEURL);

List<MEDLogresp> sortedmeds =   MEDLogresps.OrderBy(x => x.rxId).ThenBy(y => y.recordActionType);

Task.Run(() => Parallel.ForEach(sortedmeds, ele => clientMED.PostAsync(URL , new StringContent(JsonConvert.SerializeObject(ele), Encoding.UTF8, "application/json"))));

return ResponseMessage(Request.CreateResponse<CompositeResponse>(HttpStatusCode.OK, compositeResponse));
4

1 回答 1

0

由于我没有等待并行触发就返回并忘记请求,httpclient 将如何处理?

HttpClient您可以在应用程序的整个生命周期中使用单个共享静态实例,而不是Dispose()使用它。HttpClient从多个线程同时使用相同的内容是安全的。

于 2019-05-04T22:05:27.823 回答