Restsharp: InvalidDataException: límite de longitud de línea 100 excedido

Creado en 25 oct. 2018  ·  5Comentarios  ·  Fuente: restsharp/RestSharp

Al cargar archivos de datos con RestSharp a una interfaz REST .Net Core 2.1, aparece este error en algunos archivos:

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)

Cuando hago la misma operación con Insomnia, no obtengo ningún error, solo con RestSharp.

He leído aquí https://stackoverflow.com/questions/44642701/microsoft-aspnetcore-webutilities-line-length-limit-100- excedido que hay un problema con los formatos de final de línea, pero este es el único artículo al respecto .

La firma del controlador es muy simple:

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

y el código a enviar es:

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

Comentario más útil

¿Existe una ETA para esto? ahora mismo tengo que quitar el código de RestSharp para que las llamadas se realicen correctamente.

Todos 5 comentarios

He reemplazado RestSharp por HttpClient; misma llamada, mismos datos y funciona; por lo que el problema está definitivamente en RestSharp.
Parece que tiene que ver con el formato de los datos transmitidos. Lo ejecuto en Mac, por lo que posiblemente el problema planteado en el enlace que proporcioné, con respecto a CRLF esperado al final de los datos, podría ser el problema.
También escribí al proyecto .NET Core y señalaron el mismo problema.

Quizás RestSharp codifica el final de las líneas de manera diferente en Mac.

Bueno, la respuesta a SO es clara. También usamos Environment.LineBreak pero, por supuesto, esto proviene del entorno del cliente y el servidor puede tener un entorno diferente, por lo que se rompe. Debería resolverse en la próxima versión.

Me gustaría señalarles, caballeros, https://tools.ietf.org/html/rfc2616. La secuencia de caracteres que separa el encabezado y el cuerpo debe ser CRLFCRLF, por lo que \ r \ n \ r \ n, independientemente del sistema desde o hacia el que esté enviando. Cualquier otra cosa y todos los servidores web que cumplan con los estándares (nginx, haproxy, apache, entre otros) no comprenderán la solicitud correctamente.

¿Existe una ETA para esto? ahora mismo tengo que quitar el código de RestSharp para que las llamadas se realicen correctamente.

Se corrigió hace mucho tiempo.

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

qJake picture qJake  ·  7Comentarios

abishekrsrikaanth picture abishekrsrikaanth  ·  3Comentarios

captnrob picture captnrob  ·  3Comentarios

tomgallard picture tomgallard  ·  6Comentarios

weswitt picture weswitt  ·  3Comentarios