проблемы с генерацией сервисной ссылки - PullRequest
2 голосов
/ 31 марта 2011

Мне нужно создать приложение .Net, которое использует кучу веб-сервисов. Этот веб-сервис работает под управлением weblogic. В WSDL веб-служб упоминается XSD-файл, описывающий типы.

Когда я пытаюсь добавить «Справочник услуг» в VS studio, у меня возникают ошибки:

Предупреждение 1 Предупреждение о нестандартном инструменте: невозможно импортировать wsdl: portType Подробно: возникла исключительная ситуация при выполнении расширения импорта WSDL: System.ServiceModel.Description.XmlSerializerMessageContractImporter Ошибка: не удалось найти схему с целевым пространством имен 'http://mycustomer/ws/types'. XPath to Error Источник: // wsdl: определения [@targetNamespace = 'http://mycustomer/ws/wsdl']/wsdl:portType[@name='lbWebPT'] C: \ Projects \ mycustomerproject \ Сервисные ссылки \ ClientService \ Reference.svcmap

X3 для элементов portType, Binding и port файла wsdl.

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

"% ProgramFiles% \ Microsoft SDKs \ Windows \ v7.0A \ bin \ xsd.exe" "$ (ProjectDir) xsdofmycustomer.xsd" /namespace:"MyCustomer.WebServices.Types "/ c / o:" $ ( ProjectDir). "

эта команда успешно создает файл кода с типами и с правильным пространством имен, определенным в XmlRootAttribute.

этот код был помещен в выделенный проект VS. Проект, в котором я пытаюсь ссылаться на сервис, ссылается на этот проект. Тем не менее, ошибка все еще происходит.

Что я могу сделать, чтобы решить мою проблему?

PS: мне удалось частично решить мою проблему с помощью svcutil.exe pathtowsdl pathtoxsd, но я хотел бы иметь возможность поддерживать эталон в VS для простоты использования.

ТНХ

1 Ответ

2 голосов
/ 31 марта 2011

Я не фанат использования сервисных ссылок проекта из-за того, что прокси-генератор вставляется по умолчанию.Но если вы действительно хотите использовать Service References для своего проекта, вам необходимо объединить содержимое файлов wsdl & xsd в один файл.Пользовательский интерфейс Service Reference предполагает, что все данные, необходимые для генерации прокси-сервера, находятся в файле, который вы ему предоставили.SvcUtil более гибок, как вы узнали.Вы должны иметь возможность заменить элемент wsdl: import на элемент wsdl: types, который содержит содержимое файла xsd (конечно, без директивы xml).Затем вы вводите путь к файлу в текстовом поле адреса в диалоговом окне «Добавить ссылку на службу», и вы должны быть готовы к совершенству в прокси Visual Studio.

...