首页 > 解决方案 > WEB API .NET 5 将 JSON 对象流式传输到客户端获取请求

问题描述

使用以下源代码,我可以通过 ASP.NET Web API 流式传输 JSON 对象,这很好很酷!我想将此源代码迁移到 .NET 5。由于不再提供 PushStreamContent 类,任何人都可以帮助我面对解决方案吗?欢迎任何参考或示例。梅尔西

using Newtonsoft.Json;
using System;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;

namespace WebApplication1.Controllers
{
    public class ValuesController : ApiController
    {
        [HttpGet]
        public HttpResponseMessage GetMultipartData()
        {
            var response = new HttpResponseMessage();
            var content = new PushStreamContent(new Action<Stream, HttpContent, TransportContext>(WriteContent), "application/json");

            response.Headers.TransferEncodingChunked = true;
            response.Content = content;

            return response;
        }

        public static void WriteContent(Stream stream, HttpContent content, TransportContext context)
        {
            var serializer = JsonSerializer.CreateDefault();
            
            using (var sw = new StreamWriter(stream))
            using (var jw = new JsonTextWriter(sw))
            {
                jw.WriteStartArray();
                foreach (var id in Enumerable.Range(1, 100000))
                { 
                    serializer.Serialize(jw, new TestModel()
                    {
                        Alias = "rvhuang",
                        BirthDate = new DateTime(1985, 02, 13),
                        FirstName = "Robert",
                        LastName = "Huang",
                        ID = id,
                        MiddleName = "Vandenberg",
                    });
                }
                jw.WriteEndArray();
            }
        }
    }
    
    public class TestModel
    {
        public string FirstName
        {
            get; set;
        }

        public string MiddleName
        {
            get; set;
        }

        public DateTime BirthDate
        {
            get; set;
        }

        public string LastName
        {
            get; set;
        }

        public string Alias
        {
            get; set;
        }

        public int ID
        {
            get; set;
        }
    }
}

标签: asp.net-core-webapi

解决方案


推荐阅读