Как отправить большое изображение с wp7 на wcf? - PullRequest
6 голосов
/ 24 февраля 2011

Я пытаюсь отправить изображение в wcf, чтобы использовать OCR. На данный момент мне удалось преобразовать мое изображение в байт [] и отправить его на сервер с помощью wcf. К сожалению, он работает для массива размером <16 КБ и не работает для массива> 17 КБ.

Я уже установил для readerQuotas и maxArrayLength его максимальный размер в web.config для размера сервера.

Знаете ли вы, как отправлять большие данные на wcf-сервер или, возможно, в любую библиотеку, чтобы использовать OCR непосредственно на wp7?

Ответы [ 5 ]

4 голосов
/ 24 февраля 2011

Если ничего не помогает, отправьте его фрагментами по 16 Кбайт, а затем сообщение «все готово», которое его фиксирует (при необходимости, повторную сборку)

1 голос
/ 11 марта 2011

Окончательно решено.Вы должны обновить свой web.config, чтобы сервер мог получать большие данные.И затем вы должны использовать тип Stream в вашем WCF и тип byte [] в вашем WP7.Типы будут совпадать, и WCF или WP7 согласятся получить и отправить его.

В WCF:

public string ConvertImgToStringPiece(Stream img)
{
     //.....
}

В WP7:

Service1Client proxy = new Service1Client();    
proxy.ConvertImgToStringPieceCompleted += new EventHandler<ConvertImgToStringPieceCompletedEventArgs>(proxy_ConvertImgToStringPieceCompleted);    
proxy.ConvertImgToStringPieceAsync(b); //b is my Byte[], more thant 17Kb.
1 голос
/ 24 февраля 2011

Хак, но как насчет отправки его с HTTP-сообщением, если оно не слишком большое? или альтернативно изменить веб-сервис, чтобы он принимал большой двоичный объект? (текущее ограничение массива - это ограничение на тип данных массива в спецификации W3C)

1 голос
/ 24 февраля 2011

Я не знаю, работает ли это на WP7, но с WCF вы также можете использовать потоки для загрузки больших объемов данных.

0 голосов
/ 25 февраля 2011

Вы можете попробовать использовать сеанс WCF. Важно помнить, что сессии в WCF отличаются от обычных сессий, которые мы используем для интернет-программирования. Это в основном вызов метода, который запускает сеанс, любые промежуточные вызовы, а затем последний, завершающий сеанс. У вас может быть вызов службы, который запускает сеанс, отправляет фрагменты изображения, а затем вызывает последний, который закрывает сеанс и возвращает все, что вам нужно.

http://msdn.microsoft.com/en-us/library/ms733040.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...