首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将类实现从asp.net mvc移植到asp.net mvc核心

将类实现从asp.net mvc移植到asp.net mvc核心
EN

Stack Overflow用户
提问于 2019-04-11 11:26:07
回答 1查看 343关注 0票数 0

我试图实现一个ActionResult的子类,它将从REST中流出大型JSON对象,我在堆栈溢出上找到了这个解决方案,但它似乎是asp.net MVC的一个实现。

代码语言:javascript
复制
public class JsonStreamingResult : ActionResult
{
    private IEnumerable itemsToSerialize;

    public JsonStreamingResult(IEnumerable itemsToSerialize)
    {
        this.itemsToSerialize = itemsToSerialize;
    }

    public override void ExecuteResult(ActionContext context)
    {
        var response = context.HttpContext.Response;
        response.ContentType = "application/json";
        response.ContentEncoding = Encoding.UTF8;

        JsonSerializer serializer = new JsonSerializer();

        using (StreamWriter sw = new StreamWriter(response.OutputStream))
        using (JsonTextWriter writer = new JsonTextWriter(sw))
        {
            writer.WriteStartArray();
            foreach (object item in itemsToSerialize)
            {
                JObject obj = JObject.FromObject(item, serializer);
                obj.WriteTo(writer);
                writer.Flush();
            }
            writer.WriteEndArray();
        }
    }
}

但是当我在将它移植到ContentEncoding核心MVC的过程中,我发现响应类没有asp.net和OutputStream属性。

请,有人能提供必要的更改来将这个类移植到asp.net核心吗?

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-11 23:06:26

OutputStream - in ASP.NET Core HttpResponse包含可以写入响应的Body属性。ContentEncoding -设置StreamWriter编码,因为您手动将结果写入响应流。在ASP.NET MVC中,只有在调用HttpResponse.Write方法时才使用HttpResponse.ContentEncoding

代码语言:javascript
复制
public class JsonStreamingResult : ActionResult
{
    private IEnumerable itemsToSerialize;

    public JsonStreamingResult(IEnumerable itemsToSerialize)
    {
        this.itemsToSerialize = itemsToSerialize;
    }

    public override void ExecuteResult(ActionContext context)
    {
        var response = context.HttpContext.Response;
        response.ContentType = "application/json";

        JsonSerializer serializer = new JsonSerializer();

        using (StreamWriter sw = new StreamWriter(response.Body, Encoding.UTF8))
        using (JsonTextWriter writer = new JsonTextWriter(sw))
        {
            writer.WriteStartArray();
            foreach (object item in itemsToSerialize)
            {
                JObject obj = JObject.FromObject(item, serializer);
                obj.WriteTo(writer);
                writer.Flush();
            }
            writer.WriteEndArray();
        }
    }
}

更新

根据源代码的说法,JsonResultExecutor内部所做的正是我所描述的,唯一的区别是它解析了来自ContentType的编码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55631398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档