Restsharp: InvalidDataException: превышен предел длины строки 100

Созданный на 25 окт. 2018  ·  5Комментарии  ·  Источник: restsharp/RestSharp

При загрузке файлов данных с помощью RestSharp в интерфейс REST .Net Core 2.1 я получаю эту ошибку в некоторых файлах:

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)

Когда я проделываю ту же операцию с Insomnia, я не получаю никаких ошибок, только с RestSharp.

Я прочитал здесь https://stackoverflow.com/questions/44642701/microsoft-aspnetcore-webutilities-line-length-limit-100-exceeded, что существует проблема с форматами окончания строки, но это единственная статья об этом .

Подпись контроллера очень проста:

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

и код для отправки:

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

Самый полезный комментарий

Есть ли для этого расчетное время прибытия? прямо сейчас мне нужно убрать код из RestSharp, чтобы вызовы были успешными.

Все 5 Комментарий

Я заменил RestSharp на HttpClient; тот же вызов, те же данные, и это работает; так что проблема определенно в RestSharp.
Похоже, это связано с форматированием переданных данных. Я запускаю его на Mac, поэтому, возможно, проблема, поднятая в предоставленной мной ссылке, относительно CRLF, ожидаемого в конце данных, может быть проблемой.
Я также написал в проект .NET Core, и они указали на ту же проблему.

Возможно, RestSharp по-другому кодирует конец строк на Mac.

Что ж, ответ на SO ясен. Мы также используем Environment.LineBreak но, конечно, это исходит из клиентской среды, и сервер может иметь другую среду, поэтому она ломается. Это должно быть решено в следующей версии.

Я хотел бы указать вам, господа, на https://tools.ietf.org/html/rfc2616. Последовательность символов, разделяющих заголовок и тело, должна быть CRLFCRLF, поэтому \ r \ n \ r \ n, независимо от того, из какой системы вы отправляете или в какую. Все остальное и каждый стандартный веб-сервер (nginx, haproxy, apache и другие) не сможет правильно понять запрос.

Есть ли для этого расчетное время прибытия? прямо сейчас мне нужно убрать код из RestSharp, чтобы вызовы были успешными.

Исправлено очень давно.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

wojciechrak picture wojciechrak  ·  3Комментарии

vDeggial picture vDeggial  ·  6Комментарии

maximuss picture maximuss  ·  3Комментарии

ChenJasonGit picture ChenJasonGit  ·  5Комментарии

instriker picture instriker  ·  7Комментарии