我有一个小问题:我想将一个大型数组从我的Web API流式传输到我的客户端。但我得到了System.OutOfMemory
例外或AggregateException
。
我的Api看起来像这样:
public List<MyLittlePony> Get()
{ return GetLittlePonys();}
我的客户看起来像:
public string GetRequest(string URL)
{
using (var client = new System.Net.Http.HttpClient())
{
// HTTP POST
client.BaseAddress = new Uri(URL);
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var response = client.GetAsync("").Result;
string res = "";
using (HttpContent content = response.Content)
{
// ... Read the string.
Task<string> result = content.ReadAsStringAsync();
return result.Result;
}
}
如果我正在处理一小部分Objects
,那么一切正常。
但是大的那个不起作用。
我不想使用创建文件或类似的东西。
我使用这个(Web API)解决了它:
public HttpResponseMessage Get()
{
var result = GetLittlePonys();
var response = Request.CreateResponse();
response.Content =
new PushStreamContent((stream, content, context) =>
{
var serializer = new JsonSerializer();
using (var writer = new StreamWriter(stream))
{
serializer.Serialize(writer, result);
stream.Flush();
}
});
return response;
}
但现在我遇到的问题是,传输大约60000个元素需要1分钟以上。这对我的客户来说太长了。有人可以帮忙吗?