2014-09-16 2 views
1

У меня есть приложение winform, откуда я звоню в webapi, который вызывает вызовы другого публичного API в Интернете. Winform загружает файл и передает файл во временный WebAPI, который далее передает его другому публичному API-интерфейсу для дальнейшей обработки.Переслать данные файла из одного веб-Api в другой веб-Api

Все, что я не хочу делать, это сохранить любые данные из файла в anyform в моем webAPI. Вот где я дошел до сих пор. Я использую Restsharp для совершения звонков.

public async Task<HttpResponseMessage> Post() 
      { 
       if (!Request.Content.IsMimeMultipartContent()) 
        throw new Exception(); 

       var provider = new MultipartMemoryStreamProvider(); 
       await Request.Content.ReadAsMultipartAsync(provider); 

       var file = provider.Contents.First(); 
       var fileName = file.Headers.ContentDisposition.FileName.Trim('\"'); 
       //Rest call to my Public API 
       var publicAPIRsult = Client.CallMYpublicAPI(await file.ReadAsByteArrayAsync(), fileName); 

       HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK, publicAPIRsult.Content.ToString()); 
       return response; 

      } 

Есть ли лучший способ совершить этот звонок? Отзыв об обзоре кода, который я получаю от этого фрагмента, заключается в том, что он будет использоваться в большой памяти и должен передавать данные непосредственно на вызов API вместо того, чтобы читать его из ответа, а затем передавать его.

Любые предлагаемые улучшения?

+0

Я попытался смешивание обычая MultipartStreamProvider и PushStreamContent с очень ограниченным успехом. Также пришлось иметь дело с пользовательским IHostBufferPolicySelector, чтобы предотвратить буферизацию содержимого входящего запроса (как описано здесь: http://www.strathweb.com/2012/09/dealing-with-large-files-in-asp -сетью-веб-апи /). Все закончилось с OutOfMemoryException относительно относительно небольших файлов (200mb), поэтому что-то определенно не настроено правильно. – Bredstik

+0

Вы решили эту проблему? – Ajinkya

ответ