Es scheint, als ob das Hinzufügen einer Datei zu RestRequest nicht funktioniert.
ResponseStatus wird auf Error gesetzt.
die Antwort.Fehlermeldung lautet "Bytes, die in den Stream geschrieben werden sollen, überschreiten die angegebene Inhaltslänge-Bytegröße."
müssen Sie die Inhaltslänge aktualisieren, bevor Sie in den Stream schreiben.
höchstwahrscheinlich wurden die Änderungen an Content-Length zur Umgehung von .NET nicht mit Dateien getestet und der Header wurde nicht richtig eingestellt. danke für den Bericht.
versuche es noch einmal mit den neuesten Änderungen von jonfuller und sag mir, ob es immer noch nicht funktioniert
ich glaube das ist gelöst. bitte testen und wenn nicht benachrichtigen.
Problem zurückgekehrt.
In Version 105.2.3 (aktuell stabil auf Nuget) mit einer Dateigröße von ~3,5 MB.
Nach dem Downgrade auf 105.1.0 funktioniert alles einwandfrei.
Es gibt einen ähnlichen Beitrag bei StackOverflow (nicht meiner).
Ich denke, das hängt mit einem anderen Fehler #769 und #742 zusammen. Lassen Sie mich das beheben und wir werden sehen, was passiert. Etwas ist mit der Inhaltslänge passiert.
Gibt es dazu Neuigkeiten?
Beule - scheint immer noch ein Problem zu sein
Ja, ich habe auch Probleme damit, selbst ein Zurückgehen auf 105.1.0 hat nicht geholfen
Immer noch nicht gelöst.
Ich habe ein ähnliches Problem mit neueren Versionen von restsharp
beim Benutzen
req.AddFile("call[picture_attributes][file]", (s) => imageStream.CopyTo(s), GetRandomFileName("jpg"), "image/jpeg");
In neueren Versionen funktioniert es nicht
aber wenn ich benutze
req.AddFile("call[picture_attributes][file]", imageStream.GetBytes(), GetRandomFileName("jpg"), "image/jpeg");
mit
public static byte[] GetBytes(this Stream s)
{
using (var ms = new MemoryStream())
{
s.CopyTo(ms);
return ms.ToArray();
}
}
Es klappt.
Die Verwendung eines Streams mit imageStream.CopyTo funktioniert also nicht, während das Senden von byte[] funktioniert
Dies war meine Lösung, um diesen Fehler zu umgehen:
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
});
Ist RestRequest.AddFile nicht bereit für .NET Core? Ich sehe, dass es eine #if FRAMEWORK-Compilerdirektive um die AddFile-Methoden auf der Schnittstelle gibt. Ich denke, der @bcabrera- Workaround könnte für meinen Anwendungsfall funktionieren, aber der
Es gibt noch keine Version für .NET Core. Sehen Sie sich offene Probleme an, um den Fortschritt zu überwachen.
Hilfreichster Kommentar
Dies war meine Lösung, um diesen Fehler zu umgehen: