使用Web Api流式传输大型文件

时间:2018-01-19 08:18:01

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

我有一个小问题:我想将一个大型数组从我的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分钟以上。这对我的客户来说太长了。有人可以帮忙吗?

0 个答案:

没有答案
相关问题