Почему этот файл WSDL генерирует пустой служебный прокси-сервер в VS2008? - PullRequest
2 голосов
/ 17 апреля 2009

Почему этот WSDL-файл генерирует пустой служебный прокси-сервер в VS2008?

Если вы посмотрите на созданный файл Reference.cs, он пуст. Есть идеи?

Ответы [ 4 ]

9 голосов
/ 27 июня 2011

щелкните правой кнопкой мыши ссылку на сервис, настройте, снимите флажок «Повторное использование типов в ссылочных сборках» и нажмите «ОК». Попробуйте обновить сервисную ссылку. Это сработало для меня!

3 голосов
/ 17 апреля 2009

Вы читали свой список ошибок? Я получил следующее:

Custom tool warning: There was a validation error on a schema generated during export:
    Source: 
    Line: 144 Column: 12
   Validation Error: Wildcard '##any' allows element 'http://search.yahoo.com/mrss:text', and causes the content model to become ambiguous. A content model must be formed such that during validation of an element information item sequence, the particle contained directly, indirectly or implicitly therein with which to attempt to validate each item in the sequence in turn can be uniquely determined without examining the content or attributes of that item, and without any information about the items in the remainder of the sequence.       

Custom tool warning: Cannot import wsdl:portType
Detail: An exception was thrown while running a WSDL import extension: System.ServiceModel.Description.XmlSerializerMessageContractImporter
Error: Cannot import invalid schemas. Compilation on the XmlSchemaSet failed.
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://fliqz.com/services/search/20071001']/wsdl:portType[@name='IVideoSearchService']

Custom tool warning: Cannot import wsdl:binding
Detail: There was an error importing a wsdl:portType that the wsdl:binding is dependent on.
XPath to wsdl:portType: //wsdl:definitions[@targetNamespace='http://fliqz.com/services/search/20071001']/wsdl:portType[@name='IVideoSearchService']
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:binding[@name='basicHttpBinding_IVideoSearchService_20071001']

Custom tool warning: Cannot import wsdl:port
Detail: There was an error importing a wsdl:binding that the wsdl:port is dependent on.
XPath to wsdl:binding: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:binding[@name='basicHttpBinding_IVideoSearchService_20071001']
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:service[@name='VideoSearchService']/wsdl:port[@name='basicHttpBinding_IVideoSearchService_20071001']

Custom tool error: Failed to generate code for the service reference 'ServiceReference1'.  Please check other error and warning messages for details.

Редактировать: Я немного покопался и наткнулся на следующие ссылки:

Я пытался следовать инструкциям Скотта Андерсона в первой ссылке, но не смог с ними сгенерировать клиентский прокси. Возможно, тебе повезет больше.

Похоже, причина , что это не работает, в том, что Fliqz использует XmlSerializer вместо DataContract / MessageContract для своих определений контракта, а WCF не хочет с ними хорошо играть и генерирует неподходящий WSDL. Если бы вы могли контролировать первоначальный контракт, вы, вероятно, могли бы решить проблему и быть в пути; к сожалению, вам может не повезти.

Если вы сможете получить интерфейс ServiceContract и типы, которые он предоставляет, вы сможете сгенерировать свой собственный клиент вручную. Судя по некоторым именам классов, которые я вижу там, похоже, что Fliqz раскрывает внутренние объекты в их контракте, поэтому я сомневаюсь, что вы могли бы, вы знаете, вызвать их и попросить .dll, на которую вы можете ссылаться.

Вы можете попытаться выписать интерфейс и типы контрактов данных / сообщений самостоятельно, проанализировав WSDL и XSD. Похоже, было бы много работы.

Извините, я не могу больше помочь. Кажется, это сочетание плохой поддержки унаследованных WCF и плохой архитектуры / дизайна со стороны Fliqz.

2 голосов
/ 17 апреля 2009

Попробуйте добавить его в качестве веб-справочника .NET 2.0.

Перейдите в раздел «Добавить справочник услуг» и нажмите кнопку «Дополнительно». Затем вам предоставляется возможность добавить его в качестве веб-справочника .NET 2.0. Я сделал это, и заставил это работать. Я не мог с помощью стандартного "Добавить ссылку на службу"

1 голос
/ 17 апреля 2009

Я не вижу никаких элементов в вашем WSDL - это может быть проблемой.

Кроме того, вы создаете свой сервис из живого URL или из нескольких файлов на диске? Если вы используете файлы «на диске»: вы также получили файл «wsdl0», как указано в этой строке:

<wsdl:import namespace="http://fliqz.com/services/search/20071001" location="http://services.fliqz.com/LegacyServices/Services/search/R20071001/service.svc?wsdl=wsdl0"/>

Марк

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