WCF数据服务请求错误

时间:2015-10-08 16:42:31

标签: c# entity-framework odata wcf-data-services

我使用以下GettingStarted创建了第一个带有数据库连接的WCF数据服务。 https://msdn.microsoft.com/en-us/data/gg192995.aspx

我直到第13步,但我没有得到任何xml提要。相反,我收到以下消息(不幸的是德语):

  

Auf dem Server ist bei der Verarbeitung der Anforderung ein Fehler   aufgetreten。 Die Ausnahmemeldung lautet'Ein Ausdruck vom Typ   “System.Data.Entity.Core.Objects.ObjectContext”kannnichtfürden   Rückgabetyp“System.Data.Objects.ObjectContext”verwendet werden。'。   AusführlichereInformationenfinden Sie in den Serverprotokollen。死   Ausnahmestapelüberwachunglautetfolgendermaßen:

     

bei System.Linq.Expressions.Expression.ValidateLambdaArgs(Type   delegateType,Expression& body,ReadOnlyCollection 1 parameters) bei System.Linq.Expressions.Expression.Lambda[TDelegate](Expression body, String name, Boolean tailCall, IEnumerable 1参数)bei   System.Data.Services.Providers.DbContextHelper.CreateDbContextAccessor(类型   类型)bei   System.Data.Services.Providers.DbContextHelper.GetDbContextAccessor(类型   类型)bei   System.Data.Services.DataService 1.CreateMetadataAndQueryProviders(IDataServiceMetadataProvider& metadataProviderInstance, IDataServiceQueryProvider& queryProviderInstance, Object& dataSourceInstance, Boolean& isInternallyCreatedProvider) bei System.Data.Services.DataService 1.CreateProvider()bei   System.Data.Services.DataService 1.HandleRequest() bei System.Data.Services.DataService 1.ProcessRequestForMessage(流   messageBody)bei SyncInvokeProcessRequestForMessage(Object,Object []   ,Object [])bei   System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(对象   实例,对象[]输入,对象[]&输出)bei   System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc&安培;   rpc)bei   System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc&安培;   rpc)bei   System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage41(MessageRpc&安培;   rpc)bei   System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc&安培;   rpc)bei   System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc&安培;   rpc)bei   System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage3(MessageRpc&安培;   rpc)bei   System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage2(MessageRpc&安培;   rpc)bei   System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc&安培;   rpc)bei   System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage1(MessageRpc&安培;   rpc)bei System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean   isOperationContextSet)

由于SQL Server,IIS或Visual Studio中的较新版本,它可能无法正常工作吗?

也许有些命名空间问题?

错误消息指出System.Data.Entity.Core.Objects.ObjectContext无法转换为System.Data.Objects.ObjectContext。

以下是WcfDataService1.svc.cs文件中的代码

//------------------------------------------------------------------------------
// <copyright file="WebDataService.svc.cs" company="Microsoft">
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// </copyright>
//------------------------------------------------------------------------------
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;
using System.ServiceModel;

namespace RestWcfService
{
    [ServiceBehavior(IncludeExceptionDetailInFaults = true)]
    public class WcfDataService1 : DataService<AdventureWorksLTEntities>
    {
        // This method is called only once to initialize service-wide policies.
        public static void InitializeService(DataServiceConfiguration config)
        {
            // TODO: set rules to indicate which entity sets and service operations are visible, updatable, etc.
            // Examples:
            config.UseVerboseErrors = true;
            config.SetEntitySetAccessRule("MyEntityset", EntitySetRights.AllRead);
            config.SetServiceOperationAccessRule("MyServiceOperation", ServiceOperationRights.All);
            config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V3;
        }
    }
}

1 个答案:

答案 0 :(得分:0)

从旧版本的Entity Framework升级到版本6时,这是一个常见问题.System.Data.Objects.ObjectContext不是EF 6的一部分。最好的办法是删除软件包并重新安装。

替换System.Data.Objects.ObjectContext =&gt; System.Data.Entity.Core.Objects.ObjectContext

https://msdn.microsoft.com/en-us/data/upgradeef6.aspx