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

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

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

4 ответа

Решение

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

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.

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

Попробуйте добавить его как.NET 2.0 Web Reference.

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

Я не вижу никаких элементов в вашем 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"/>

Марк

Другие вопросы по тегам