简体   繁体   English

WCF 数据服务请求错误

[英]WCF Data Service Request Error

I used the following GettingStarted to create my first WCF Data Service with a Connection to a Database.我使用以下入门指南创建了我的第一个连接到数据库的 WCF 数据服务。 https://msdn.microsoft.com/en-us/data/gg192995.aspx https://msdn.microsoft.com/en-us/data/gg192995.aspx

I made it until step 13, but i don't get any xml feed.我做到了第 13 步,但我没有收到任何 xml 提要。 Instead i get the following message (unfortunately in german):相反,我收到以下消息(不幸的是德语):

Auf dem Server ist bei der Verarbeitung der Anforderung ein Fehler aufgetreten. 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" kann nicht für den Rückgabetyp "System.Data.Objects.ObjectContext" verwendet werden.'. Die Ausnahmemeldung lautet 'Ein Ausdruck vom Typ "System.Data.Entity.Core.Objects.ObjectContext" kann nicht für den Rückgabetyp "System.Data.Objects.ObjectContext" verwendet werden.'. Ausführlichere Informationen finden Sie in den Serverprotokollen. Ausführlichere Informationen finden Sie in den Serverprotokollen。 Die Ausnahmestapelüberwachung lautet folgendermaßen: Die Ausnahmestapelüberwachung lautet folgendermaß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 parameters) bei System.Data.Services.Providers.DbContextHelper.CreateDbContextAccessor(Type type) bei System.Data.Services.Providers.DbContextHelper.GetDbContextAccessor(Type type) 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(Stream messageBody) bei SyncInvokeProcessRequestForMessage(Object , Object[] , Object[] ) bei System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Obje 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(Type type) bei System.Data.Services.Providers.DbContextHelper.GetDbContextAccessor(Type type) bei System.Data.Services.DataService 1.CreateMetadataAndQueryProviders(IDataServiceMetadataProvider& metadataProviderInstance, IDataServiceQueryProvider& queryProviderInstance, Object& dataSourceInstance, Boolean& isInternallyCreatedProvider) bei System.Data.Services.DataService () bei System.Data.Services.DataService 1.HandleRequest() bei System.Data.Services.DataService 1.ProcessRequestForMessage(Stream messageBody) bei SyncInvokeProcessRequestForMessage(Object , Object[] , Object[] ) bei System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Obje ct instance, Object[] inputs, Object[]& outputs) 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) ct实例,对象[]输入,对象[]&输出)系统.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)系统.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc)系统.ServiceModel.Dispatcher.ImtimemutableDispatch .ProcessMessage41(MessageRpc& rpc) 系统.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc& rpc) 系统.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc& rpc) 系统.ServiceModel.Dispatcher.ImatchMessage&RpcMessage 系统. .ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage2(MessageRpc&rpc) 系统.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& rpc) 系统.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage1(MessageRpc&System.PatcherRpc) (布尔值 isOperationContextSet)

Maybe it don't work because of newer versions from SQL Server, IIS or Visual Studio?也许它因为来自 SQL Server、IIS 或 Visual Studio 的较新版本而不起作用?

Maybe some namespace problems?也许一些命名空间问题?

The error message says that System.Data.Entity.Core.Objects.ObjectContext cannot be converted into System.Data.Objects.ObjectContext.该错误消息表示 System.Data.Entity.Core.Objects.ObjectContext 无法转换为 System.Data.Objects.ObjectContext。

Here is the code from the WcfDataService1.svc.cs file这是 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;
        }
    }
}

That's a common issue when upgrading from an older version of Entity Framework to version 6. System.Data.Objects.ObjectContext is not a part of EF 6. Best thing to do is remove the packages and reinstall.从旧版本的实体框架升级到版本 6 时,这是一个常见问题。 System.Data.Objects.ObjectContext 不是 EF 6 的一部分。最好的办法是删除包并重新安装。

Replace System.Data.Objects.ObjectContext => System.Data.Entity.Core.Objects.ObjectContext替换 System.Data.Objects.ObjectContext => System.Data.Entity.Core.Objects.ObjectContext

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM