首页 新闻 搜索 专区 学院

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

0
悬赏园豆:50 [已解决问题] 解决于 2020-03-21 15:29

在一个 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
}

请问如何实现?

dudu的主页 dudu | 高人七级 | 园豆:38801
提问于:2020-03-21 11:50
< >
分享
最佳答案
0

通过下面的代码实现了。

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();
}
dudu | 高人七级 |园豆:38801 | 2020-03-21 15:28

dudu哈哈哈哈

乔达摩 | 园豆:200 (初学一级) | 2020-03-22 13:18
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册