RestRequestへのファイルの追加が機能しないようです。
ResponseStatusはErrorとして設定されます。
response.Errorメッセージは、「ストリームに書き込まれるバイトが、指定されたContent-Lengthバイトサイズを超えています。」です。
ストリームに書き込む前に、コンテンツの長さを更新する必要があります。
.NETを回避するためのContent-Lengthの変更はファイルでテストされておらず、ヘッダーが正しく設定されていない可能性があります。 レポートをありがとう。
jonfullerの最新の変更を加えてこれを再試行し、それでも機能しないかどうかを教えてください
私はこれが解決されると信じています。 テストして、そうでない場合は通知してください。
問題が返されました。
バージョン105.2.3(現在はnugetで安定)では、ファイルのサイズは最大3.5MBです。
105.1.0にダウングレードした後は、すべて正常に機能します。
StackOverflowにも同様のではありません)。
これは別のバグ#769と#742に関連していると思います。修正して、どうなるか見てみましょう。 コンテンツの長さに問題が発生しました。
これについて何かニュースはありますか?
バンプ-まだ問題のようです
うん、私もこれに問題があります、105.1.0に戻っても助けにはなりませんでした
まだ解決されていません。
新しいバージョンのrestsharpでも同様の問題が発生しています
使用する場合
req.AddFile( "call [picture_attributes] [file]"、(s)=> imageStream.CopyTo(s)、GetRandomFileName( "jpg")、 "image / jpeg");
新しいバージョンでは機能しません
しかし、私が使用する場合
req.AddFile( "call [picture_attributes] [file]"、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を使用してストリームを使用することは、byte []の送信中には機能しません。
これは、このバグを回避するための私の解決策でした。
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は.NETCoreの準備ができていませんか? インターフェイスのAddFileメソッドの周りに#ifFRAMEWORKコンパイラ指令があるようです。 @bcabreraの回避策は私のユースケースでは単体テストは
.NETCoreのバージョンはまだありません。 進行状況を監視するには、未解決の問題を参照してください。
最も参考になるコメント
これは、このバグを回避するための私の解決策でした。