通过WCF RIA服务公开OData
我创建了一个新的Silverlight应用程序,因此我有一个名为“SilverlightOnLineChess.Web”的Web项目和名为“SilverlightOnlineChess.Client”的Silverlight应用程序。在此解决方案中,我创建了一个名为“SilverlightOnlineChess.Data”的新WCF RIA Services类库,并在此过程中创建了名为“SilverlightOnlineChess.Data.Web”的关联Web项目。我在“SilverlightOnlineChess.Data.Web”项目中创建了必要的实体数据模型和域服务类,并确保我检查了“Expose OData端点”。通过WCF RIA服务公开OData
一切工作正常,并通过应用程序查看数据丹迪。但是,如果我尝试点击该网址以查看OData带回的内容,如下所示: “http://localhost:49771/SilverlightOnlineChess-Data-Web-OnlineChessService.svc/OData/”它不知道此网址是什么。它只适用于在主Web项目“SilverlightOnLineChess.Web”中创建服务和实体模型而不是“SilverlightOnLineChess.Data.Web”。
所以,现在如果我输入了网址为:
“http://localhost:49771/SilverlightOnlineChess-Web-OnlineChessService.svc/OData/”,它带回的元数据。
任何想法?发生
的服务的URL如下:
命名空间+类型名称与由虚线随后的.svc/OData的/代替点的域的服务。
这一点,你需要通过添加
[Query(IsDefault = true)]
要公开查询以上揭露查询的OData之后。
若要公开的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>
你还需要确保你referening下列DLL:
System.ServiceModel.DomainServices.Hosting.OData C:\ Program Files文件\微软的SDK \ RIA服务\ 1.0 \图书馆\服务器\ System.ServiceModel.DomainServices.Hosting.OData.dll
您可以通过选择显示所有文件来查看客户端项目,以确保您正在寻找适合您的OData服务的正确URL。转到Generated_Code \ ProjectName.Web.g.cs。查找Service.svc。这将是您的OData服务的根URI。如果您将您的域名服务置于Service文件夹下,它将为Service/YourServiceName.svc/OData /。