Можете ли вы использовать службы WCF с Windows Phone 7? - PullRequest
8 голосов
/ 21 августа 2010

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

Однако, когда я пытаюсь добавить ссылку на службу для моей службы WCF (которая корректно работает в обычном консольном приложении, поэтому я исключил WCF как проблему), я получаю массу ошибок.

  • Предупреждение 5 Предупреждение о нестандартном инструменте: не найдены конечные точки, совместимые с Silverlight 3. Сгенерированный клиентский класс не будет использоваться, если информация о конечной точке не предоставлена ​​через конструктор.
  • Предупреждение 6 Настраиваемое предупреждение инструмента: цель была вызвана для исключения.
  • Предупреждение 2 Предупреждение о нестандартном инструменте: невозможно импортировать wsdl: portType Подробно: возникла исключительная ситуация при запуске расширения импорта WSDL: System.ServiceModel.Description.DataContractSerializerMessageContractImporter
  • Ошибка: не удалось загрузить тип 'System.Runtime.Serialization.DataContractSet' из сборки 'System.Runtime.Serialization, версия = 2.0.5.0, культура = нейтральная, PublicKeyToken = 7cec85d7bea7798e'.
  • Предупреждение 4 Предупреждение о нестандартном инструменте: невозможно импортировать wsdl: порт Подробно: Произошла ошибка при импорте привязки wsdl:, от которой зависит порт wsdl: *. 1014 *
  • Предупреждение 3 Предупреждение о нестандартном инструменте: невозможно импортировать wsdl: binding Подробно: при импорте wsdl: portType произошла ошибка, от которой зависит привязка wsdl:.
  • Ошибка 7 Ошибка пользовательского инструмента: не удалось сгенерировать код для ссылки на услугу «ServiceReference». Пожалуйста, проверьте другие сообщения об ошибках и предупреждения для деталей.

Мне кажется странным, что в первой ошибке упоминается Silverlight 3, так как я только что полностью удалил и переустановил все свои инструменты разработки, чтобы убедиться, что я использую последнюю версию .NET и Silverlight.

Эти ошибки похожи на те, которые я вижу, если я пытаюсь создать новый проект Silverlight и не установить флажок «Включить службы RIA WCF». Я не смог найти никаких средств для включения этого для WP7, если это действительно проблема.

Любая помощь от вас, ученых джентльменов (и джентельменок), будет очень признательна.

Ответы [ 7 ]

7 голосов
/ 06 сентября 2010

Я столкнулся с точно такой же ошибкой и изменил тип коллекции на System.Collections.Generic.List вместо System.Collections.ObjectModel.ObservableCollections. Это было странно, поскольку я даже не установил флажок «Всегда генерировать контракты сообщений».

Надеюсь, это поможет.

7 голосов
/ 22 августа 2010

Помните, что Silverlight - даже для Windows Phone, который использует специализированную версию Silverlight 3 - НЕ работает со всеми привязками / конечными точками службы WCF, а вместо этого поддерживает только подмножество (которое, например, исключает привязки WS-HTTP). Самая простая ставка - создать службу WCF для приложений Silverlight с помощью шаблона «Служба WCF с поддержкой Silverlight» в Visual Studio (в разделе «Добавить / Новый элемент / Silverlight»).

Эта запись блога (http://blogs.msdn.com/b/silverlightws/archive/2009/03/20/what-s-new-with-web-services-in-silverlight-3-beta.aspx) из блога команды Silverlight WCF должна пролить некоторый свет на возможности. Возможно, вы захотите проверить весь блог (http://blogs.msdn.com/b/silverlightws/),, поскольку в нем есть несколько интересных советов). и получил статьи.

7 голосов
/ 22 августа 2010

Мммм, я просто изменил конфигурацию справочной службы, сняв флажок «тип повторного использования ....», а затем обновление сработало, и он сгенерировал файл конфигурации службы.Не уверены, поможет ли это вам?

1 голос
/ 27 ноября 2010

Эта проблема возникла при запуске Visual Studio с правами администратора. Для обходного пути вы можете запустить Visual Studio без прав администратора, добавить ссылку на веб-службу, которая будет генерировать прокси-классы, и закрыть решение. Снова откройте решение проекта в Visual Studio с правами администратора. Отчет об ошибке уже подан в Microsoft Connect.

https://connect.microsoft.com/VisualStudio/feedback/details/624984/error-warnings-when-adding-web-reference-on-windows-phone-7-project?wa=wsignin1.0

0 голосов
/ 13 октября 2011

Следующее решило мою проблему:

Я создал новый проект WP7 и добавил службу wcf.

Затем я скопировал папку Service References в каталог моего проекта, который дал мне эту проблему, перезапустил Visual studio и собрал приложение.

Вы должны получить ошибки пространства имен внутри вашего Reference.cs; просто измените пространство имен на пространство имен текущего проекта.

0 голосов
/ 11 марта 2011

Ответ - да, вы можете получить доступ к службам WCF из WP7, и, как заметил предыдущий автор, он поддерживает только WS-HTTP.В случае, если вы пытаетесь получить доступ к службе WCF для приложения Silverlight, вам нужно сделать несколько вещей:

  1. Обновите ваш Silvleright Toolkit до последней версии.Получите его из Codeplex
  2. Добавьте ссылку на Microsoft.ServiceModel.DomainServices.Hosting в свой проект Silverlight.
  3. Перейдите в Web.Config и добавьте конечную точку мыла:

    <domainServices>
        <endpoints>
            <add name="Soap"
                 type="Microsoft.ServiceModel.DomainServices.Hosting.SoapXmlEndpointFactory,
    Microsoft.ServiceModel.DomainServices.Hosting"
            />
        </endpoints>
    </domainServices> 

    Не беспокойтесь о предупреждении "system.serviceModel";игнорировать его

  4. Добавить сервисную ссылку."Но какой Ури?"ты спрашиваешь.Вот адрес вашей службы: [namespace of your ria service]-[classname of your ria service].svc, где . заменены на -.Итак, если я создал свою службу внутри каталога Services в моем приложении SL, и пространство имен выглядит так:

    namespace myApplication.Web.Services
    {
        [EnableClientAccess()]
        public class SuperService ....
    

, тогда адрес будет:

http://localhost[:port]/Services/myApplication-Web-Services-SuperService.svc

Пусть инструмент сделает все остальное.Если вы получаете какие-то странные ошибки, сохраните и закройте VS и запустите снова, и все работает.

Я надеюсь, что это ответ, который вы ищете.

0 голосов
/ 21 февраля 2011

Да, это одна странная ошибка. Вы сможете возвращать строки, целые числа и т. Д., Но все остальное, например, ArrayList и т. Д., Вы получите эту ошибку.

В вашем коде нет ничего плохого, есть только ошибка в VS. Microsoft исправила это (проверьте пакеты обновления), но если вы программируете для Windows Phone 7, ошибка все еще есть.

Вы удалили службу, затем папку и папку «Объекты». Сохраните и закройте VS. Затем перезапустите проект, добавьте ссылку на службу (НЕ ОТЛАДЫВАЙТЕ / НЕ РАБОТАЙТЕ с приложением). О, да, сделайте резервную копию в первую очередь. Это должно быть хорошо. Возможно, вам придется повторять этот процесс при каждом обновлении службы.

Это должно исправить это, в противном случае вам, возможно, придется открыть новый проект или, если возможно, воссоздать веб-сервис.

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