WCF数据服务5.6快速入门

Tak*_*eam 7 c# wcf wcf-data-services

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

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

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

它的要点是

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

为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<NorthwindEntities>
    {
        // 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;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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

<div id="content">
  <p class="heading1">Request Error</p>
  <p>The server encountered an error processing the request. See server logs for more details.</p>
</div>
Run Code Online (Sandbox Code Playgroud)

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

我按照指示按照我想的三通,但显然我错过了一些东西.我现在已经多次一步一步地完成这个过程,试图找到我可能跳过的东西无济于事.


更新:

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

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

Chr*_*isO 10

听起来你正在使用实体框架6,它已经很久没有出现了.您需要执行一些额外的步骤才能使WCF Data Services 5.6和EF 6能够很好地协同工作.

您需要添加额外的WCF数据服务实体框架提供NuGet包,然后,而不是继承你的服务DataService<T>,你继承EntityFrameworkDataService<T>.

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