WCF数据服务5.6快速入门

我一直试图让WCF数据服务服务器工作几天。 我终于在今天退缩了,只是尝试完全按照快速启动的方式展示……没有别的……在完全新鲜的项目中。 肯定会有用。

但它没有..它的失败方式与我的其他测试相同。

我只是跟着这个例子 。 使用Visual Studio 2013 for Web Express和托管正在使用IIS Express。 我已安装WCF工具版本5.6,以便Visual Studio具有WFC数据服务5.6模板。

它的要点是

创建ASP.Net应用程序选择MVC类型,不为MVC以外的任何内容添加任何文件夹,也不添加unit testing,个人帐户认证。

为NorthWind数据库添加ADO.Net实体数据模型,在web.config中称为NorthwindEntities,导入所有表。

添加WCF数据服务5.6项,将其命名为NorthWind.svc。

将NorthWind.svc.cs支持代码更改为以下内容。

using System; using System.Collections.Generic; using System.Data.Services; using System.Data.Services.Common; using System.Linq; using System.ServiceModel.Web; using System.Web; namespace StackOverflowApp { public class NorthWindService : DataService { // This method is called only once to initialize service-wide policies. public static void InitializeService(DataServiceConfiguration config) { config.UseVerboseErrors = true; config.SetEntitySetAccessRule("Orders", EntitySetRights.AllRead | EntitySetRights.WriteMerge | EntitySetRights.WriteReplace ); config.SetEntitySetAccessRule("Order_Details", EntitySetRights.AllRead| EntitySetRights.AllWrite); config.SetEntitySetAccessRule("Customers", EntitySetRights.AllRead); config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V3; } } } 

现在它已准备好构建和运行..它应该工作..是的?

我运行它,然后导航到服务..我受到以下投诉的欢迎。

 

Request Error

The server encountered an error processing the request. See server logs for more details.

我怎么调试呢? 当导航到在应用程序中生成错误的页面或不存在的页面时,这不是典型的响应。 我感觉data.service系统正在生成这个响应..它实际上开始处理请求..但由于一些钝的原因而失败了。

我按照说明按照我的想法发球,但显然我错过了一些东西。 我现在已经多次一步一步地完成这个过程,试图找到我可能跳过的东西但无济于事。


更新:

Aha ..在另一个类似的问题下,他们建议使用config.UserVerboseErrors = true添加详细消息。 这对我没有任何影响..但使用属性的替代方法确实做到了! 使用[ServiceBehavior(IncludeExceptionDetailInFaults = true)]装饰类现在会产生更具描述性的错误。

服务器遇到处理请求的错误。 exception消息是’表达式类型’System.Data.Entity.Core.Objects.ObjectContext’不能用于返回类型’System.Data.Objects.ObjectContext”。 请参阅服务器日志以获取更多详 exception堆栈跟踪是:blahblah

听起来你正在使用的entity framework6已经很久没有了。 您需要执行一些额外的步骤才能使WCF Data Services 5.6和EF 6能够很好地协同工作。

您需要添加其他WCF数据服务entity framework提供程序Nuget包,然后从EntityFrameworkDataServiceinheritance而不是从DataServiceinheritance您的服务。

完整步骤在数据服务博客上: http : //blogs.msdn.com/b/astoriateam/archive/2013/10/02/using-wcf-data-services-5-6-0-with-entity-框架-6.aspx

对了谢谢。 你的答案是正确的克里斯。 在我启用详细消息的装饰版本之后,我终于找到了问题,并获得了关于链接到对象的额外细节问题。

所以我发现了问题并修复了它,或者至少我现在可以使用快速入门指南使其工作。 使用我自己的数据库仍然是一个小小的squirley ..当我知道我在数据库中有项目时返回一个空集..但至少我现在有工作展览-A进行比较以找到问题。 (啊哈!在那里发现了问题,我忘了为我的非Northwind数据库添加了web.config的权限连接 – 所以它现在全部工作!)

无论如何,第一个体面的线索是关注错误消息(直到我使用class属性启用详细消息后才显示),发现这个问题实际上与WCF与EntityFramework 6的接口有关。(我没有升级到版本6我可能不会有问题)

https://entityframework.codeplex.com/workitem/896

然后,我搜索了WCF 5.6和EntityFramework6的问题。 和whalla ..有一个WCF的alpha版本解决了这个问题。

请注意,如果您逐字按照说明操作,则仍然存在问题(或者对我而言)。 获取alpha2而不是alpha1,因为它修复了链接错误。 即

 Install-Package Microsoft.OData.EntityFrameworkProvider -Version 1.0.0-alpha2 -Pre 

http://blogs.msdn.com/b/astoriateam/archive/2013/10/02/using-wcf-data-services-5-6-0-with-entity-framework-6.aspx

今天安装alpha2 6/7/2014“Install-Package Microsoft.OData.EntityFrameworkProvider -Pre”。 此外,Microsoft.Data.Services版本必须为5.6.0.0。