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包,然后从EntityFrameworkDataService
inheritance而不是从DataService
inheritance您的服务。
完整步骤在数据服务博客上: 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
今天安装alpha2 6/7/2014“Install-Package Microsoft.OData.EntityFrameworkProvider -Pre”。 此外,Microsoft.Data.Services版本必须为5.6.0.0。
- 在IIS 6中托管.net 4.0 REST WCF服务
- 您将如何在WCF数据服务中实现API密钥?
- 如何强制.net WCF客户端在basicHttpBinding中使用NTLM?
- WCF返回ArrayOfKeyValueOfintstringKeyValueOfintstring 而不是List 和List instread of List
- 我是否需要在WCF DataContract中公开构造函数,以使其在客户端上的对象实例化期间工作?
- 测试WCF Web服务?
- 使用URI和DataContract类参数编写Web服务方法
- EncryptedXml DecryptDocument方法抛出“Bad Data”exception
- IIS上托管的WCF服务无法正常工作