如何将大对象发布到Web API

时间:2019-02-27 22:02:48

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

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

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

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

或者,我也尝试过这种方法,但是在这里,同样出现例外,它也会在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;