我必须发出多个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));
答案 0 :(得分:0)
因为我返回时没有等待平行射击并忘记了 请求,httpclient将如何处置?
您可以在应用程序的生命周期内使用HttpClient
的单个共享静态实例,而永远不会Dispose()
。同时在多个线程中使用同一HttpClient
是安全的。