none
Ошибка добавления ссылки на службу данных WCF RRS feed

  • Общие обсуждения

  • Здравствуйте.

    Я пытаюсь создать решение с подключением к службе данных WCF из приложения Silverlight (5) так, как описано здесь: Привязка элементов управления Silverlight к службе данных WCF

    Солюшн создан на VS2013 Update 3. Но на этапе "Добавление источника данных в приложение Silverlight" возникает ошибка:

    Произошла ошибка при загрузке ''http://localhost:25231/DataService/WCFDS.svc/_vti_bin/ListData.svc/$metadata''.
    Отказ при выполнении запроса с сообщением об ошибке:Сервер обнаружил ошибку при обработке запроса. Дополнительные сведения см. в журналах сервера.
    Метаданные содержат неразрешимую ссылку: "http://localhost:25231/DataService/WCFDS.svc".
    Тип содержимого text/html ответного сообщения не соответствует типу содержимого привязки (application/soap+xml; charset=utf-8). При использовании особого кодировщика необходимо правильно реализовать метод IsContentTypeSupported. 
    Удаленный сервер возвратил ошибку: (500) Внутренняя ошибка сервера.
    Если служба определена в текущем решении, попробуйте собрать решение и добавить ссылку на службу еще раз.

    Я поискал здесь подобное по форуму, но решения именно для такого описания ошибки, увы, не нашёл. Были похожие, но их предлагаемые варианты не помогают в этом случае, так как в предлагаемых решениях используется ссылка на интерфейс обычных служб WCF, а не на службу данных WCF.

    Подскажите, пожалуйста, в чём тут может быть дело???

    Update1.

    Утилита WcfTestClient при попытке подключения к службе выдаёт следующее:

    Не удалось добавить службу. Метаданные службы недоступны. Убедитесь, что служба работает и предоставляет метаданные.

    Тогда здесь вопрос: как заставить службу данных предоставлять  метаданные?

    Update2.

    По одному из решений предлагалось добавить в Web.config разделы behaviors и services. Я добавил так:

     <behaviors>
          <serviceBehaviors>
            <behavior name="metadataBehavior">
              <serviceMetadata httpGetEnabled="true" httpGetUrl="" />
              <serviceDebug includeExceptionDetailInFaults="False" />
            </behavior>
          </serviceBehaviors>
        </behaviors>
        
        <services>
          <service name="wa.DataService.WCFDS" behaviorConfiguration="metadataBehavior">        
            <endpoint address="" binding="basicHttpBinding" contract="IMetadataExchange"/>
            <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>        
          </service>
        </services>

    Но  тут есть два момента:

    а) имя сервиса "wa.DataService.WCFDS" я написал вручную, так как его нет в предлагаемом списке имён, что приводит к предупреждению:

    Атрибут "name" недействителен: значение "wa.DataService.WCFDS" недействительно с точки зрения его типа данных "serviceNameType" — Сбой ограничения Enumeration.
    При этом обычный сервис WCF (не сервис данных) в списке имён присутствует. Тогда почему нет в списке сервиса данных? (Дополнение. Если добавить интерфейс с атрибутом [ServiceContract] к службе данных, то она появляется в списке имён, но ошибка, описанная в пункте б, остаётся).

    б) теперь при добавлении ссылки на службу данных ошибка другая:

    Метаданные содержат неразрешимую ссылку: "http://localhost:25231/DataService/WCFDS.svc".
    Не удается активировать службу "/DataService/WCFDS.svc" из-за возникновения исключения в процессе компиляции.
    Сообщение об исключении: Служба "wa.DataService.WCFDS" не имеет конечных точек приложения (не инфраструктурных).
    Это может быть связано с тем, что для данного приложения не найден файл конфигурации или в файле конфигурации не удалось найти элементы службы, соответствующие данному имени службы, или конечные точки не были определены в элементе службы.

    Что же тут не так? И это притом, что ссылка на обычную службу WCF (не службу данных) в silverlight-приложении добавляется без проблем и без дополнительных действий.

    Update 3.

    Снёс VS2013U3, установил VS2012U4 - всё тоже самое прошло без ошибок, ссылка на службу данных добавилась и данные на клиента передались также без ошибок... Источник проблемы под VS2013U3 остаётся невыясненным.








    19 сентября 2014 г. 20:25