مرحبا،
أحاول الحصول على تحميل متعدد الأجزاء يعمل مع 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 () مثل: