Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将文件数据从一个Web Api转发到另一个Web Api_C#_Multipartform Data_Asp.net Web Api2_Restsharp - Fatal编程技术网

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

C# 将文件数据从一个Web Api转发到另一个Web Api,c#,multipartform-data,asp.net-web-api2,restsharp,C#,Multipartform Data,Asp.net Web Api2,Restsharp,我有一个winform应用程序,我在其中调用一个webapi,inturns在web上调用另一个公共API。 winform上载一个文件,并将该文件传递给临时WebAPI,后者将该文件进一步传递给另一个面向公众的API进行进一步处理 我不想做的就是将文件中的任何数据以任何形式持久化到我的webAPI中。 到目前为止,我已经做到了这一点。 我正在使用Restsharp打电话 public async Task<HttpResponseMessage> Post()

我有一个winform应用程序,我在其中调用一个webapi,inturns在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调用,而不是从响应中读取数据,然后将其传递


有什么改进建议吗?

我尝试混合使用自定义MultipartStreamProvider和PushStreamContent,但成功率非常有限。还必须处理自定义IHostBufferPolicySelector,以防止传入请求内容被缓冲,如下所述:。在相对较小的200mb文件上仍然出现OutOfMemoryException,因此某些设置肯定不正确。您解决了此问题吗?