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

Почему этот файл WSDL создает пустой сервисный прокси в VS2008?

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


person TheSoftwareJedi    schedule 16.04.2009    source источник


Ответы (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.

person Randolpho    schedule 16.04.2009
comment
видя эти ошибки и зная, что это НЕ мой файл WSDL, что вы предлагаете? - person TheSoftwareJedi; 17.04.2009
comment
Это не ваш WSDL? Хм... это сложно. Вы можете попытаться просмотреть WSDL и XSD, чтобы создать интерфейс службы и объекты DTO вручную, а затем вручную настроить клиент, но это не имеет особого смысла. Вы пробовали ссылку на службу в VS 2005 с установленным .NET 3.0? Сам проверить не могу, к сожалению... - person Randolpho; 17.04.2009

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

person walaa waref    schedule 27.06.2011
comment
Спасибо, я застрял на этом в течение нескольких часов - person Daveo; 11.01.2012
comment
Спасибо, я все время забываю этот флажок. - person Halvard; 14.12.2012

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

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

person Alan    schedule 16.04.2009

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

Марк

person marc_s    schedule 16.04.2009
comment
это не моя услуга... это fliqz.com - person TheSoftwareJedi; 17.04.2009
comment
Да, я понимаю, но вы создали свой клиентский прокси из URL-адреса или вы скачали WSDL на диск локально и создали свой прокси оттуда? Если вы загрузили - вам также нужно будет загрузить отдельные дополнительные части для WSDL (часть ?wsdl=wsdl0 и, возможно, больше) - person marc_s; 18.04.2009
comment
созданный из URL. у них есть другой wsdl, который отлично работает. - person TheSoftwareJedi; 20.04.2009