我有一个基本上充当代理的ASP Core应用
public IActionResult PostFileRequest(IFormFile file)
{
var httpRequest = new HttpRequestMessage()
{
Content = new StreamContent(file.OpenReadStream())
};
var task = httpClient.SendAsync(httpRequest);
// we store the task internally to be later processed by background services
// we don't want the user to wait for the response
return Ok();
}
此逻辑的问题在于,即使在发送httpRequest
之前,用户也可以获得响应。文件流被处置,我得到了例外。我不希望客户端等待响应。 Task
完成发送请求后,是否还有其他单独的HttpClient
完成?发送文件后,我不再需要流,并且可以安全地回答用户并关闭上下文。
UPD:如果代码中的注释不够清楚:不,我不会忽略SendAsync
的结果。我在后台服务中处理它。但是无论结果如何,对用户的响应始终是相同的,因此此处的任务是对用户进行回答并尽快释放上下文。