Проблема обратной совместимости WCF
Вопрос
У меня есть служба WCF, на которую мне нужно ссылаться из проекта .net 2.0.
Я попытался сослаться на него, используя "добавить веб-ссылку", но он портит параметры.
Например, у меня есть метод в службе, который ожидает char[]
для передачи, но когда я добавляю веб-ссылку, метод ожидает int[]
.
Итак, я попытался настроить svcutil и это сработало...вроде.
Я смог скомпилировать класс обслуживания, только добавив кучу .net 3.0 ссылки на мои .net 2.0 проект.Архитектору это не понравилось, поэтому мне пришлось это исправить (и, вероятно, к лучшему).
Поэтому мне было интересно, есть ли у кого-нибудь какие-либо подсказки или ресурсы о том, как я могу настроить .net 2.0 проект для ссылки на служба WCF.
Решение
Один из тех случаев, когда вам нужно отредактировать WSDL.Для начала полезный инструмент
Другие советы
Какую привязку вы используете? Думаю, если вы будете придерживаться базовой привязки Http, вы сможете создать прокси-сервер, используя подход «добавить веб-ссылку» из проекта .net 2?
Возможно, если вы опубликуете определение контракта/интерфейса, это может помочь?
Ура Ричард
Спасибо за ресурс.Это, конечно, помогло мне протестировать веб-сервис, но не сильно помогло при использовании сервиса WCF в моем приложении .net 2.0.
В конечном итоге я вернулся к архитекторам и объяснил, что dll 3.0, на которые мне нужно было сослаться, были скомпилированы обратно для работы в CLR 2.0.Нам не обязательно нравится это решение, но на данный момент мы собираемся использовать его, поскольку жизнеспособных альтернатив не так уж и много.
Я использовал привязку BasicHttp, но на самом деле проблема была в XMLSerializer.Он не распознает должным образом wsdl, созданный WCF (даже с привязками BasicHttp), для чего-либо, кроме базовых типов значений.
Мы обошли эту проблему, добавив ссылку на dll 3.0 и используя сериализатор datacontract.