RestSharp опубликовать образ в сервисе WCF REST - PullRequest
4 голосов
/ 11 февраля 2012

У меня проблемы с загрузкой изображений на сервер через RestSharp.

У меня есть служба 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);

1 Ответ

3 голосов
/ 17 февраля 2012

Заголовок Content-Length устанавливается автоматически в зависимости от содержимого тела запроса, поэтому вам не нужно задавать его явно.

...