Есть ли обходной путь или замена для System.Runtime.Serialization.DataContractAttribute в Compact Framework (Windows Mobile) - PullRequest
3 голосов
/ 10 октября 2011

Мы добавляем функциональность в клиент Windows Mobile для отправки данных в службу .NET. К сожалению, класс .cs, который создает svcutil.exe, генерирует непригодный код для Compact Framework. (это имя не существует в компактной структуре)

Существует ли замена или сторонний класс или обходной путь, или любой другой способ заставить мобильное приложение подключиться к услуге?

Мы можем изменить API / сервис для поддержки Compact-Framework. Мы новички в CF-игре (и .NET в целом). Мы не уверены в том, как разрешить CF-клиентам - метод «из коробки» подходит для настольных приложений, но, увы, не для мобильных устройств ...

EDIT

Я попытался использовать netcfSvcUtil.exe вместо этого, но получил ошибку (которую я не получаю с svcutil.exe ). Я полагаю, это означает, что созданный сервис просто не совместим с компактной структурой?

Я совершенно не осведомлен об этом - но я бы предположил, что спецификации для передачи данных не имеют корреляции между платформами и что транспортировка может осуществляться между буксиром. Я полагаю, это наивно ...

Любые предложения о том, как это исправить? Нужно ли менять сторону обслуживания, чтобы она была удобной для мобильных / компактных сред?

EDIT

сообщения об ошибках, которые я получаю:

Ошибка: в инструменте произошла ошибка.

Ошибка: ошибка в приложении

Ответы [ 2 ]

2 голосов
/ 12 октября 2011

Как я уже упоминал в своем комментарии, первое, что нужно сделать, - убедиться, что сервис настроен на базовую HTTP-привязку, чтобы сделать его CF-дружественным.

1 голос
/ 19 октября 2011

Проверьте версию soap в wsdl, не уверен, но я могу вспомнить, что была проблема с использованием SOAP 1.2 в CF. Если это так, просто заставьте WCF использовать 1.1 в файле конфигурации.

В любом случае, опубликуйте сообщение об ошибке. Проблема, которую вы описываете, звучит странно, потому что обычно, когда есть проблема с файлом wsdl, SVC не пытается генерировать какой-либо код. Вы уверены, что используете svc таким образом, чтобы генерировать код CF? Вы пытались использовать Добавить ссылку на службу в Visual Studio? Это прекрасно сработало для меня в большинстве случаев.

Редактировать: Я прочитал ваш вопрос еще раз. - Вы не можете использовать «обычный» svcutil.exe для генерации кода CF, используйте версию netcfsvcutil.exe - Вместо командной строки я действительно рекомендую использовать Visual Studio Add Service Reference, тогда мастер позаботится обо всем. - Да, веб-сервисы не зависят от технологии и поддерживаются CF, но обязательно используйте привязки, поддерживаемые CF (например, basicHttpBinding), и версию soap, поддерживаемую CF.

WCF <-> Сценарий Compact Framework вначале может сбивать с толку, но он работает хорошо.

...