Restsharp: InvalidDataException: Batas panjang baris 100 terlampaui

Dibuat pada 25 Okt 2018  ·  5Komentar  ·  Sumber: restsharp/RestSharp

Saat mengunggah file data dengan RestSharp ke antarmuka .Net Core 2.1 REST, saya mendapatkan kesalahan ini pada beberapa file:

System.IO.InvalidDataException: Line length limit 100 exceeded.
   at Microsoft.AspNetCore.WebUtilities.BufferedReadStream.ReadLineAsync(Int32 lengthLimit, CancellationToken cancellationToken)
   at Microsoft.AspNetCore.WebUtilities.MultipartReaderStream.ReadAsync(Byte[] buffer, Int32 offset, Int32 count, CancellationToken cancellationToken)
   at Microsoft.AspNetCore.WebUtilities.StreamHelperExtensions.DrainAsync(Stream stream, ArrayPool`1 bytePool, Nullable`1 limit, CancellationToken cancellationToken)
   at Microsoft.AspNetCore.WebUtilities.MultipartReader.ReadNextSectionAsync(CancellationToken cancellationToken)

Ketika saya melakukan operasi yang sama dengan Insomnia, saya tidak mendapatkan kesalahan apa pun, hanya dengan RestSharp.

Saya telah membaca di sini https://stackoverflow.com/questions/44642701/microsoft-aspnetcore-webutilities-line-length-limit-100-exceeded bahwa ada masalah dengan format akhir baris, tetapi ini adalah satu-satunya artikel tentang itu .

Tanda tangan pengontrol sangat sederhana:

[HttpPost, DisableRequestSizeLimit]
public async Task<IActionResult> AddPictureAsync(
    IFormFile Picture,
    IFormFile Thumbnail,
    string Title)
{

dan kode untuk mengirim adalah:

var Request = new RestRequest("picture", Method.POST) { AlwaysMultipartFormData = true };
Request.AddHeader("SessionId", SessionId);
Request.AddFile("Picture", PhotoData.ToArray(), Photo.PhotoUrl);
Request.AddFile("Thumbnail", ThumbnailData, Photo.PhotoUrl.Replace(".jpg", "-t.jpg"));
Request.AddParameter("Title", Photo.Title ?? string.Empty, ParameterType.GetOrPost);

Komentar yang paling membantu

Apakah ada ETA untuk ini? sekarang saya harus memindahkan kode dari RestSharp agar panggilan berhasil.

Semua 5 komentar

Saya telah mengganti RestSharp dengan HttpClient; panggilan yang sama, data yang sama, dan berfungsi; jadi masalahnya pasti di RestSharp.
Sepertinya itu ada hubungannya dengan pemformatan data yang diteruskan. Saya menjalankannya di Mac, jadi mungkin masalah yang muncul di tautan yang saya berikan, mengenai CRLF yang diharapkan di akhir data, bisa menjadi masalah.
Saya juga menulis ke proyek .NET Core dan mereka menunjukkan masalah yang sama.

Mungkin RestSharp melakukan pengkodean akhir baris secara berbeda di Mac.

Nah, jawaban di SO sudah jelas. Kami juga menggunakan Environment.LineBreak tetapi tentu saja ini berasal dari lingkungan klien dan server dapat memiliki lingkungan yang berbeda, sehingga rusak. Itu harus diselesaikan di versi berikutnya.

Saya ingin mengarahkan tuan-tuan ke https://tools.ietf.org/html/rfc2616. Urutan karakter yang memisahkan header dan body harus CRLFCRLF, jadi \r\n\r\n, terlepas dari sistem apa yang Anda kirim dari atau ke. Apa pun dan setiap server web yang sesuai standar (nginx, haproxy, apache antara lain) akan gagal memahami permintaan dengan benar.

Apakah ada ETA untuk ini? sekarang saya harus memindahkan kode dari RestSharp agar panggilan berhasil.

Sudah lama diperbaiki.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat