Restsharp: InvalidDataException: Zeilenlängenbegrenzung 100 überschritten

Erstellt am 25. Okt. 2018  ·  5Kommentare  ·  Quelle: restsharp/RestSharp

Beim Hochladen von Datendateien mit RestSharp auf eine .Net Core 2.1 REST-Schnittstelle erhalte ich bei einigen Dateien diesen Fehler:

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)

Wenn ich die gleiche Operation mit Schlaflosigkeit zu tun, ich erhalte keine Fehler, nur mit RestSharp.

Ich habe hier https://stackoverflow.com/questions/44642701/microsoft-aspnetcore-webutilities-line-length-limit-100-exceeded gelesen, dass es ein Problem mit den Zeilenendformaten gibt, aber dies ist der einzige Artikel darüber .

Die Controller-Signatur ist sehr einfach:

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

und der zu sendende Code lautet:

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);

Hilfreichster Kommentar

Gibt es dafür eine ETA? Im Moment muss ich den Code von RestSharp entfernen, damit die Aufrufe erfolgreich sind.

Alle 5 Kommentare

Ich habe RestSharp durch HttpClient ersetzt; gleicher Anruf, gleiche Daten und es funktioniert; Das Problem liegt also definitiv in RestSharp.
Es sieht so aus, als ob es mit der Formatierung der übergebenen Daten zu tun hat. Ich führe es auf einem Mac aus, daher könnte möglicherweise das in dem von mir bereitgestellten Link angesprochene Problem bezüglich CRLF, das am Ende der Daten erwartet wird, das Problem sein.
Ich habe auch an das .NET Core-Projekt geschrieben und sie haben auf das gleiche Problem hingewiesen.

Vielleicht macht RestSharp die Codierung des Zeilenendes auf dem Mac anders.

Nun, die Antwort auf SO ist klar. Wir verwenden auch Environment.LineBreak aber das kommt natürlich von der Client-Umgebung und der Server kann eine andere Umgebung haben, also bricht es zusammen. Sollte in der nächsten Version behoben sein.

Ich möchte Sie, meine Herren, auf https://tools.ietf.org/html/rfc2616 hinweisen

Gibt es dafür eine ETA? Im Moment muss ich den Code von RestSharp entfernen, damit die Aufrufe erfolgreich sind.

Es ist vor langer Zeit behoben.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

captnrob picture captnrob  ·  3Kommentare

guevelamax15000 picture guevelamax15000  ·  3Kommentare

DuBistKomisch picture DuBistKomisch  ·  6Kommentare

maximuss picture maximuss  ·  3Kommentare

weswitt picture weswitt  ·  3Kommentare