Fra*_*bem 2 c# asp.net-core asp.net-core-webapi
我有一个客户端(Xamarin)和两个Web API服务器A和B.客户端向A发出请求,使用请求参数向B发出另一个请求.如何将A从B接收的响应返回给客户端B使用C对客户来说是透明的.
例如,如果我使用HttpClient如何HttpResponseMessage在控制器的操作中转发到客户端,从A到B发出请求?
查看Microsoft ASP.NET Core Proxy存储库以获取透明HTTP代理的一个很好的示例.此代理是一个中间件,处理客户端对A的请求并向B发出自己的请求.
为了提供完整的答案,这是其源代码的一部分,实际上是转发HttpResponseMessage:
using (var responseMessage = await _httpClient.SendAsync(
requestMessage, HttpCompletionOption.ResponseHeadersRead, context.RequestAborted))
{
context.Response.StatusCode = (int)responseMessage.StatusCode;
foreach (var header in responseMessage.Headers)
{
context.Response.Headers[header.Key] = header.Value.ToArray();
}
foreach (var header in responseMessage.Content.Headers)
{
context.Response.Headers[header.Key] = header.Value.ToArray();
}
// SendAsync removes chunking from the response. This removes the header so it doesn't expect a chunked response.
context.Response.Headers.Remove("transfer-encoding");
await responseMessage.Content.CopyToAsync(context.Response.Body);
}
Run Code Online (Sandbox Code Playgroud)
从2019年更新:在原始答案发布后,代理完全重新设计.这是更新的代码复制接收HttpResponseMessage到 HttpContext.Response.此外,整个项目稍后存档.检查存储库自述文件以获取有关正在进行的开发的更多信息
| 归档时间: |
|
| 查看次数: |
2121 次 |
| 最近记录: |