يبدو أن إضافة ملف إلى RestRequest لا يعمل.
تم تعيين ResponseStatus على أنها خطأ.
رسالة response.Error هي "تتجاوز البايت المراد كتابتها إلى الدفق حجم بايت طول المحتوى المحدد."
يجب تحديث طول المحتوى قبل الكتابة إلى البث.
على الأرجح لم يتم اختبار التغييرات التي تم إجراؤها على طول المحتوى للتغلب على .NET مع الملفات ولم يتم تعيين الرأس بشكل صحيح. شكرا للتقرير.
جرب هذا مرة أخرى مع أحدث تغييرات jonfuller وأخبرني ما إذا كان لا يزال لا يعمل
أعتقد أن هذا سيحل. يرجى الاختبار والإخطار إذا لم يكن كذلك.
عادت المشكلة.
في الإصدار 105.2.3 (مستقر حاليًا على nuget) بحجم ملف ~ 3.5 ميغابايت.
بعد التخفيض إلى 105.1.0 كل شيء يعمل بشكل جيد.
هناك وظيفة مماثلة
أعتقد أن هذا مرتبط بخلل آخر # 769 و # 742 دعني أصلح ذلك وسنرى ما سيحدث. حدث شيء ما بطول المحتوى.
هل هناك أي أخبار عن هذا؟
نتوء - يبدو أنه لا يزال يمثل مشكلة
نعم ، لدي مشاكل مع هذا أيضًا ، حتى العودة إلى 105.1.0 لم تساعد
لم تحل بعد.
أواجه مشكلة مماثلة مع الإصدارات الأحدث من restsharp
عند الاستخدام
req.AddFile ("call [picture_attributes] [ملف]" ، (s) => imageStream.CopyTo (s) ، GetRandomFileName ("jpg") ، "image / jpeg") ؛
لا يعمل في الإصدارات الأحدث
ولكن إذا كنت أستخدم
req.AddFile ("call [picture_attributes] [ملف]" ، imageStream.GetBytes () ، GetRandomFileName ("jpg") ، "image / jpeg") ؛
مع
public static byte[] GetBytes(this Stream s)
{
using (var ms = new MemoryStream())
{
s.CopyTo(ms);
return ms.ToArray();
}
}
إنها تعمل.
لذا فإن استخدام دفق باستخدام imageStream.CopyTo لا يعمل أثناء إرسال أعمال البايت []
كان هذا هو الحل الخاص بي للتغلب على هذا الخطأ:
var req = GetRestRequest("Upload", Method.POST, null);
//req.AddFile("file",
// (s) => {
// var stream = input(imageObject);
// stream.CopyTo(s);
// stream.Dispose();
// },
// fileName, contentType);
req.Files.Add(new FileParameter {
Name = "file",
Writer = (s) => {
var stream = input(imageObject);
stream.CopyTo(s);
stream.Dispose();
},
FileName = fileName,
ContentType = contentType,
ContentLength = contentLength
});
هل RestRequest.AddFile غير جاهز لـ .NET Core؟ أرى أن هناك توجيه مترجم #if FRAMEWORK حول أساليب AddFile على الواجهة. أعتقد أن حل bcabrera يمكن أن يعمل مع حالة الاستخدام الخاصة بي ولكن اختبار الوحدة سيكون تحديًا.
لا يوجد إصدار لـ .NET Core حتى الآن. انظر القضايا المفتوحة لمراقبة التقدم.
التعليق الأكثر فائدة
كان هذا هو الحل الخاص بي للتغلب على هذا الخطأ: