.net: невозможно добавить ссылку на службу, только веб-ссылку

У меня есть существующий проект, который использует веб-службы. Один из них был добавлен как служебная ссылка, а другой - как веб-ссылка. Я не помню, почему он был добавлен в качестве веб-ссылки, но, возможно, потому, что я не мог заставить его работать!

Существующая ссылка на службу для одной веб-службы работает нормально, поэтому это не проблема с .net.

Я могу успешно создать ссылку на службу для второй веб-службы, но ни один из методов не доступен..wsdl показывает схему, но Reference.vb показывает только пространство имен и ни один из методов.

Чтобы уточнить, это два разных сторонних поставщика веб-услуг.

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

Кто-нибудь сталкивался с этим раньше?

Edit

Имеет ли значение, что на адресе есть две службы?

Edit

Я использую .net 3.5 и VS2008.

alt text http://img139.imageshack.us/img139/719/addservicereference.gif

Ответы

Ответ 1

Функция добавления служебной ссылки, как известно, является свиньей и является ошибкой - я использую ее большую часть времени, но иногда я сталкиваюсь с проблемами, когда код, который он генерирует, либо подобен этому (т.е. несуществующий), либо не используется повторно типы, где это должно быть сделано.

Вам следует попробовать использовать инструмент командной строки svcutil (открыть VS Command Prompt для запуска), который, хотя он похож на ссылочную функцию VS, на самом деле является совершенно другой базой кода. Вы можете использовать это для создания прокси-сервера, всех типов клиентской части и т.д., Так же как и с помощью справочной функции службы.

Самое главное - он работает почти все время - пока само обслуживание является разумным.

Ответ 2

Что именно вы имеете в виду, когда говорите "методы недоступны"?

Многие люди, которые говорят такие вещи, ожидают, что методы будут доступны точно так же, как и с "Добавить веб-ссылку". Но они разные. См. " Как использовать веб-службу.

Ответ 3

Я подозреваю, что он пытается повторно использовать типы из другой ссылки. Нажмите "Дополнительно"... и удалите "повторное использование типов в ссылочных сборках". Вы также должны убедиться, что имя службы уникально, чтобы избежать конфликтов.

Ответ 4

Вы пытались добавить ссылку на проект С# вместо VB.NET?

Я заметил, что все методы в вашей службе называются "getXXX", возможно, они столкнулись с некоторой "умной" обработкой на генераторе VB.NET.

Попробуйте создать новый проект С# и добавьте служебную ссылку.

Ответ 5

Хотя старый пост, но просто хочу поделиться своим опытом, чтобы он мог помочь кому-то сегодня.

При общении с веб-сервисами, разработанными на платформе, таких как Java, Phython или Ruby, вероятно, причиной того, что классы Stub/Proxy не создаются из-за проблем соответствия (стандарт совместимости WS-I). Вы можете столкнуться с такими ошибками, как:

Не удалось создать код для служебной ссылки ServiceReferenceName. Подробнее см. Другие сообщения об ошибках и предупреждения...

Фактические данные об ошибках, которые вы можете получить, используя svcutil.exe, конечно, в этом случае ошибка может выглядеть примерно так:

Ошибка: невозможно импортировать wsdl: portType

Лучше использовать ссылку на веб-службу для таких служб, а не Service Reference. (Добавить ссылку на службу → Дополнительно → Добавить веб-ссылку...)

Если вы энтузиасты по игре с XML и WSDL, вы можете пойти дальше и исправить проблему с привязкой и portType. Вероятно, импорт и включение необходимо исправить, если я правильно помню с последнего раза, я потратил время на его исправление, чтобы он работал с Service Reference Option.