投稿 资料上传 提问 搜索
您现在的位置是: 首页 > 问答 > 正文

ASP.NET Core 中如何将 HttpResponseMessage 直接发送给客户端

在一个 ASP.NET Core Controller Action 中,通过 HttpClient 请求后端的一个 web api ,想把 web api 的响应(HttpResponseMessage)直接发送给客户端,代码如下: 

public async Task<IActionResult> MarkdownToHtmlPorxy()
{
var response = await _markdownNodeApi.PostAsync(
Request.GetEncodedPathAndQuery(),
new StreamContent(Request.Body));
// How to send HttpResponseMessage to client
}

请问如何实现?  

 

问题回复
  1. 微笑向暖
    微笑向暖IT技术之家

    通过下面的代码实现了。 

    public async Task<IActionResult> MarkdownToHtmlPorxy()
    {
    var apiResponse = await _markdownNodeApi.PostAsync(
    Request.GetEncodedPathAndQuery(),
    new StreamContent(Request.Body));

    Response.OnStarting(() =>
    {
    foreach (var header in apiResponse.Headers)
    {
    if (Response.Headers.ContainsKey(header.Key))
    {
    Response.Headers[header.Key] = header.Value.FirstOrDefault();
    }
    else
    {
    Response.Headers.Add(header.Key, header.Value.FirstOrDefault());
    }
    }

    return Task.CompletedTask;
    });

    await apiResponse.Content.CopyToAsync(Response.Body);

    return new EmptyResult();
    }


     

    回复