Restsharp: Masalah kehabisan Memori saat mengunggah file besar

Dibuat pada 13 Okt 2016  ·  7Komentar  ·  Sumber: restsharp/RestSharp

Saat kami mengunggah file besar dengan RestSharp, kami secara acak mendapatkan beberapa masalah OutOfMemory. Ini terjadi karena RestSharp menggunakan HttpWebRequest di belakang layar, dan nilai default untuk AllowWriteStreamBuffering adalah true. Ini berarti bahwa seluruh file dimuat di memori saat melakukan kueri, jika ada beberapa pengalihan untuk dapat memutar ulang. Tetapi jika kami mengunggah file 500 mb, itu menjadi masalah.

Yang kita perlukan adalah dapat menyetel AllowWriteStreamBuffering ke false, tetapi saat ini tidak ada cara untuk mengubah AllowWriteStreamBuffering di ConfigureWebRequest.

Sesuatu seperti ini akan cukup untuk kebutuhan kita:

var request = new RestRequest(Method.POST); request.AllowWriteStreamBuffering = false; request.Files.Add(new FileParameter // ...

help wanted good first issue

Komentar yang paling membantu

Saya mengalami masalah yang sama dan tidak tahu bagaimana menghadapinya

Semua 7 komentar

Catatan : Untuk dapat menguji tekanan memori .Net vs RestSharp 105.2.3, berikut adalah cara kami mengujinya karena ada perbaikan bug yang belum dirilis saat menggunakan .AddFile:

// In the current implementation of RestSharp, there is an issue when using AddFile with a writer.
// It doesn't set the ContentLength, which break the queries with System.Net.ProtocolViolationException as we are not uploading 
// the expected amount of bytes. It's fixed in an yet unreleased version, so we are using the Files.Add manually for now.
var request = new RestRequest(Method.POST);
request.Files.Add(new FileParameter
{
                Name = "file",
                Writer = outStream => inStream.CopyTo(outStream),
                FileName = fileName,
                ContentLength = inStream.Length,
});

Ada pembaruan tentang ini? Saya mengalami masalah yang persis sama dan menurut saya masuk akal untuk mengekspos AllowWriteStreamBuffering baik di RestClient atau RestRequest. Sejauh yang saya tahu tidak ada solusi. Kasus penggunaan saya untuk mengirim file 100MB paralel dan jika AllowWriteStreamBuffering benar, itu akan sering membuang pengecualian memori.

Saya mengalami masalah yang sama dan tidak tahu bagaimana menghadapinya

apakah sudah terpecahkan????

@AgentCoolDevil Anda ingin membantu? Lakukan permintaan tarik.

Apakah ada yang masih mendapatkan kesalahan ini pada versi terbaru?

Seperti yang disebutkan oleh @yvesmh di #1213, masalah ini dapat diselesaikan dengan menonaktifkan buffering aliran tulis WebRequest . Anda dapat menggunakan konfigurasi permintaan web pada IRestClient untuk menangani kasus seperti itu.

client.ConfigureWebRequest(x => x.AllowWriteStreamBuffering = false);

Apakah halaman ini membantu?
0 / 5 - 0 peringkat