【问题标题】:How to post large object to a web api如何将大对象发布到 Web api
【发布时间】:2019-02-27 22:02:47
【问题描述】:

我有一个类将数据发布到 Web API,然后处理大对象并生成相应的数据库记录。我正在处理一个相当大的对象,其中包含多种类型的子对象。这是我的代码:

var content = new StringContent(JsonConvert.SerializeObject(largeObject), Encoding.UTF8, "application/json");
var response = client.PostAsync(serviceEndpointURL,content).Result;

这返回 SystemOutOfMemoryException 是可以理解的,但我不确定如何设计它来支持如此大的对象。

【问题讨论】:

标签: c# json asp.net-web-api


【解决方案1】:

传递大量认为 Web API 不可靠的对象。您需要考虑不同的选项来设计您的解决方案。您可以使用一些消息队列(即 RabbitMQ)服务和后端消息处理程序。 Web API 创建一些作业请求,消息处理程序将在后端处理消息。

【讨论】:

  • 我认为我们可能需要更多的上下文来绘制大枪。同样,当此时已经在苦苦挣扎时,这也无济于事
【解决方案2】:

或者,我也尝试过这个,但在这里,它在 ser.Serialize() 行出错,并出现相同的异常。

var content = new PushStreamContent((stream, httpContent, transportContext) =>
{
    using (var tw = new StreamWriter(stream))
    {
        var ser = new JsonSerializer();
        ser.Serialize(tw, largeObject);
    }
});

var response = client.PostAsync(serviceEndpointURL,content).Result;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-22
    • 1970-01-01
    • 2016-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-30
    • 2014-03-11
    相关资源
    最近更新 更多