我有一个将数据发布到Web API的类,然后该Web API处理大对象并生成相应的db记录。我正在处理一个相当大的对象,其中包含多种类型的子对象。这是我的代码:
var content = new StringContent(JsonConvert.SerializeObject(largeObject), Encoding.UTF8, "application/json");
var response = client.PostAsync(serviceEndpointURL,content).Result;
这可以理解地返回SystemOutOfMemoryException,但是我不确定如何设计它来支持如此大的对象。
答案 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;