Привет,
Я пытаюсь заставить многостраничную загрузку работать с v105.2.3, но, похоже, что-то не так с Content-Length.
using (FileStream source = File.Open(path, FileMode.Open))
{
RestSharp.RestRequest request2 = new RestSharp.RestRequest();
request.Resource = $"/files/uploads/{UploadId}";
request.Method = Method.POST;
request.AddFile(filename, source.CopyTo, filename);
request.AlwaysMultipartFormData = true;
IRestResponse<UploadResponse> response2 = this.Client.Execute<UploadResponse>(request);
if ((int)response2.StatusCode != 201)
{
throw new Exception(response2.StatusDescription);
}
}
В ответе 2 есть это сообщение об ошибке (оно на немецком языке и означает, что запрос был отменен):
_Die Anfrage wurde abgebrochen: Die Anfrage wurde abgebrochen .._
Внутреннее исключение (невозможно закрыть поток, пока не будут записаны все байты):
_Stream kann nicht geschlossen werden, bevor alle Bytes geschrieben wurden._
В Fiddler я получаю следующее:
Запрос - Сущность
Content-Length: 210
Content-Type: multipart/form-data; boundary=-----------------------------28947758029299
Ответ
HTTP/1.1 408 Request body incomplete
The request body did not contain the specified number of bytes. Got 159, expected 210
Мне нужно использовать пакет Nuget с этими версиями, поскольку у меня есть другие пакеты (например, RestSharp.Newtonsoft.Json), которым требуется эта версия.
Похоже, здесь та же проблема:
https://github.com/restsharp/RestSharp/issues/742
С наилучшими пожеланиями,
Алекс
Привет, Алекс,
У меня такая же проблема. Вы решили это или работали над этим?
С наилучшими пожеланиями,
Морис
У меня была такая же проблема, и я решил ее, используя метод request.Files.Add () вместо AddFile () следующим образом:
request.Files.Add(new FileParameter
{
Name = "fileAttach",
Writer = (s) =>
{
FileStream stream = File.Open(_attachment.path, FileMode.Open);
stream.CopyTo(s);
stream.Dispose();
},
FileName = _attachment.name,
ContentType = _attachment.contentType,
ContentLength = _attachment.size
});
Вы можете использовать AddFile
но вам нужно указать длину содержимого, для этого есть параметр.
Самый полезный комментарий
У меня была такая же проблема, и я решил ее, используя метод request.Files.Add () вместо AddFile () следующим образом: