将文件数据从一个Web Api转发到另一个Web Api

时间:2014-09-16 05:38:14

标签: c# multipartform-data asp.net-web-api2 restsharp

我有一个winform应用程序,我正在调用webapi,它会调用Web上的另一个公共API。 winform上传文件并将文件传递给临时WebAPI,后者将其进一步传递给其他面向公众的API以供进一步处理。

我不想做的就是在我的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调用,而不是从响应中读取它,然后将其传递过来。

任何建议的改进措施?