4
RestSharp経由でサーバーに画像をアップロードするときに問題が発生しました。RestSharp WCF RESTサービスへの投稿画像
私はストリームを受け入れるRest Wcfサービスを持っています。私は常にこの例外を取得下のコードを使用している場合:ストリームに書き込まれる
ProtocolViolationExceptionバイトは、指定された のContent-Lengthバイトサイズを超えています。
コンテンツの長さを設定するために設定する必要のある設定は違いがないようです。
サーバー側はイメージを受信しませんが、より小さなバイトストリームを受信します。
助けてください。
クライアント(テスト)コード:
byte[] byteArray = File.ReadAllBytes("small.jpg");
request.AddHeader("Content-Length", int.MaxValue.ToString());//doesn't matter what length I put here
request.AddFile("image/jpeg", (requestStream) =>
{
using (var ms = new MemoryStream(byteArray))
{
ms.CopyTo(requestStream, byteArray.Length);//doesn't matter whether I add second param or not
ms.Flush();
ms.Close();
}
},
"sample",
"image/jpeg");
request.Method = Method.POST;
client.ExecuteAsync(request, (response, a) =>
{
Assert.IsNotNull(response.Content);
string content = response.Content;
resetEvent.Set();
});
サービスコード(記憶された画像のURLを返し)
[OperationContract]
[WebInvoke(UriTemplate = "upload/{fileName}/{fileExtension}/{id}", Method = "POST", BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json)]
Message UploadPhoto(string fileName, String fileExtension, string id, Stream fileContents);
Hmm ..だから、おそらくファイルが大きすぎますか? –
バイト配列をとる 'AddFile()'オーバーロードを使うべきです。 –
*「どの回答が最も役立つかを決めたら、回答の左側にあるチェックボックスの概要をクリックして、それを受け入れられた回答としてください。」(* from stackoverflow.com/faq#howtoask)それがあなたの問題を解決したら、答えを記入してください! – DIF