Предоставление OData через службы WCF RIA

Я создал новое приложение Silverlight, поэтому у меня есть веб-проект SilverlightOnLineChess.Web и приложение Silverlight под названием SilverlightOnlineChess.Client. В этом решении я создал новую библиотеку классов WCF RIA Services под названием «SilverlightOnlineChess.Data», и при этом она создает связанный веб-проект под названием «SilverlightOnlineChess.Data.Web». Я создал необходимую модель данных сущности и классы обслуживания домена в проекте SilverlightOnlineChess.Data.Web и удостоверился, что я проверил «Expose OData endpoint».

Все работает нормально и изящно просматривать данные через приложение. Однако, если я попытаюсь нажать URL-адрес, чтобы увидеть, что возвращает OData, например: "http://localhost:49771/SilverlightOnlineChess-Data-Web-OnlineChessService.svc/OData/ "он не знает, что это за URL. Это работает, только если я создаю сервисы и модель сущности в основном веб-проекте SilverlightOnLineChess.Web, а не SilverlightOnLineChess.Data.Web.

Итак, теперь, если я введу URL-адрес, как в:

"http://localhost:49771/SilverlightOnlineChess-Web-OnlineChessService.svc/OData/ ", он возвращает метаданные.

Любые идеи?


person David    schedule 28.06.2010    source источник


Ответы (2)


URL-адрес Сервиса выглядит следующим образом:

Пространство имен + typename для службы домена с точками, замененными дефисами, за которыми следует .svc / OData /.

После этого вам нужно предоставить запросы OData, добавив

[Query(IsDefault = true)]

над вашими запросами, которые вы хотите разоблачить.

person Kevin LaBranche    schedule 14.04.2011

Чтобы предоставить доступ к конечной точке OData, вам необходимо убедиться, что в вашем web.Config есть следующее:

<system.serviceModel>
    <domainServices>
      <endpoints>
        <add name="OData" type="System.ServiceModel.DomainServices.Hosting.ODataEndpointFactory, System.ServiceModel.DomainServices.Hosting.OData, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
      </endpoints>
    </domainServices>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />    
  </system.serviceModel>

Вам также необходимо убедиться, что вы ссылаетесь на следующие библиотеки DLL:

System.ServiceModel.DomainServices.Hosting.OData C: \ Program Files \ Microsoft SDKs \ RIA Services \ v1.0 \ Libraries \ Server \ System.ServiceModel.DomainServices.Hosting.OData.dll

Вы можете убедиться, что ищете правильный URL-адрес для своей службы OData, заглянув в свой клиентский проект с выбранным параметром «Показать все файлы». Перейдите в Generated_Code \ ProjectName.Web.g.cs. Сделайте находку для Service.svc. Это будет корневой URI вашей службы OData. Если вы поместите службу домена в папку Service, это будет Service / YourServiceName.svc / OData /.

person Keith Adler    schedule 14.04.2011