我从ASP.NET核心应用程序调用内部HTTP服务。来自此服务的响应消息可能非常大,因此我希望尽可能有效地转发它们。如果可能的话,我只是想将内容“映射”到控制器的响应中,或者换句话说,“将从服务流来的流传输到流出控制器的流中”。在ASP.NET Core中有效转发来自内部HttpClient调用的内容
我控制器的方法,到目前为止只是调用服务:
[HttpPost]
public Post([FromBody]SearchQuery searchQuery)
{
var response = _searchClient.Search(searchQuery);
// ?
}
该服务由一个HttpClient的实例调用。这里(作为一个例子),我只返回HttpContent,但当然我可以回到完全读取和系列化的身体(我显然不希望):
public async Task<HttpContent> Search(SearchQuery searchQuery)
{
var content = new StringContent(TsearchQuery, Encoding.UTF8, "application/json");
var response = await _httpClient.PostAsync("_search", content);
return response.Content;
}
其高效,快速地返回内容?我如何将我的控制器方法中的内容传递给响应? ASP.NET Core是否在下面创建流?或者我应该明确处理我的代码中的流?