0

我创建了一个新的 Silverlight 应用程序,因此我有一个名为“SilverlightOnLineChess.Web”的 Web 项目和一个名为“SilverlightOnlineChess.Client”的 Silverlight 应用程序。在此解决方案中,我创建了一个名为“SilverlightOnlineChess.Data”的新 WCF RIA 服务类库,并在此过程中创建了名为“SilverlightOnlineChess.Data.Web”的关联 Web 项目。我在“SilverlightOnlineChess.Data.Web”项目中创建了必要的实体数据模型和域服务类,并确保我检查了“公开 OData 端点”。

一切正常,花花公子通过应用程序查看数据。但是,如果我尝试点击 url 以查看 OData 带回的内容,如:“ http://localhost:49771/SilverlightOnlineChess-Data-Web-OnlineChessService.svc/OData/ ”它不知道这个 url 是什么. 仅当我在主 Web 项目“SilverlightOnLineChess.Web”而不是“SilverlightOnLineChess.Data.Web”中创建服务和实体模型时,它才有效。

所以现在如果我输入网址,如下所示:

http://localhost:49771/SilverlightOnlineChess-Web-OnlineChessService.svc/OData/ ”,它带回了元数据。

有任何想法吗?

4

2 回答 2

0

服务的 URL 如下所示:

域服务的命名空间 + 类型名,其中点替换为破折号,后跟 .svc/OData/。

在此之后,您需要通过添加向 OData 公开查询

[Query(IsDefault = true)]

在您要公开的查询之上。

于 2011-04-14T19:17:16.357 回答
0

要公开 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

您可以通过查看您的客户端项目并选择“显示所有文件”来确保您正在寻找 OData 服务的正确 URL。转到 Generated_Code\ProjectName.Web.g.cs。查找 Service.svc。这将是您的 OData 服务的根 URI。如果您将域服务放在 Service 文件夹下,它将是 Service/YourServiceName.svc/OData/。

于 2011-04-14T21:16:10.873 回答