Kna*_*ack 7 c# dotnet-httpclient .net-core asp.net-core
我正在从我的ASP.NET核心应用程序调用内部HTTP服务.来自此服务的响应消息可能非常大,因此我希望尽可能高效地转发它们.如果可能的话,我只想将内容"映射"到控制器响应 - 或者换句话说"将从服务流出的流传输到流出控制器的流".
到目前为止我的控制器方法只是调用服务:
[HttpPost]
public Post([FromBody]SearchQuery searchQuery)
{
var response = _searchClient.Search(searchQuery);
// ?
}
Run Code Online (Sandbox Code Playgroud)
该服务由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;
}
Run Code Online (Sandbox Code Playgroud)
返回内容是否有效且快速?如何将控制器方法中的内容传递给响应?ASP.NET Core是否在下面创建流?或者我应该明确处理代码中的流?
您可以Stream从动作返回,ASP.NET Core MVC将有效地将其写入响应主体.
[HttpPost]
public async Task<Stream> Post([FromBody]SearchQuery searchQuery)
{
var response = await _searchClient.Search(searchQuery);
return await response.ReadAsStreamAsync();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2077 次 |
| 最近记录: |