在WCF数据服务中返回复杂类型,在调试时收到请求错误

时间:2014-02-04 16:28:39

标签: wcf odata

我的WCF数据服务中有一个方法,我希望返回一个复杂的类型。我为复杂类型创建了一个单独的类,并在查询中选择了新类。当我执行程序时,它会抛出“请求错误”。

你可以帮我解决这个问题。

[WebGet]
        public List<KeywordsForPKs> GetDomainObjForPKs()
        {
            var keys = from key in this.CurrentDataSource.DS_Keyword
                       select new KeywordsForPKs()
                       {
                           PK = key.pk,
                           AccountFK = key.accountFK,
                           ProjectFK = key.projectFK,
                           KeywordExpr = key.keywordExpr,
                           weight = key.weight,
                           IsNotBolded = key.isNotBolded,
                           IsAbstractKeyword = key.isAbstractKeyword,
                           IsBoldedInText = key.isBoldedInText,
                       };
            return keys.ToList();
        }

当我调试时,我收到Request错误说 “异常消息是'无法为返回类型加载元数据'System.Collections.Generic.List 1[DataServices.KeywordsForPKs]' of method 'System.Collections.Generic.List 1 [DataServices.KeywordsForPKs] GetDomainObjForPKs()'。'。有关详细信息,请参阅服务器日志。异常堆栈跟踪是:

System.Data.Services.DataService {{1}处System.Data.Services.Providers.BaseServiceProvider.AddOperationsFromType(Type type)的System.Data.Services.Providers.BaseServiceProvider.AddServiceOperation(MethodInfo方法,String protocolMethod)上的

System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance,Object)中的SyncInvokeProcessRequestForMessage(Object,Object [],Object [])上的System.Data.Services.DataService`1.ProcessRequestForMessage(Stream messageBody)中的1.HandleRequest() System.ServiceModel.Dispatcher.DispatchOperationRuntime.ProcessMessage(MessageRpc&amp; rpc)的System.ServiceModel.Dispatcher.DmmatchOperationRuntime.ProcessMessage5(MessageRpc&amp; rpc)位于System.ServiceModel.Dispatcher.ImmutableDispatchRuntime的System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc&amp; rpc)中的[]输入,Object []和输出。 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc&amp; rpc)上的ProcessMessage41(MessageRpc&amp; rpc),位于System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc&放大器; rpc)位于System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage2(MessageRpc&amp; rpc)的System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage3(MessageRpc&amp; rpc),位于System的System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc&amp; rpc)。 System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)中的ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage1(MessageRpc&amp; rpc)“

1 个答案:

答案 0 :(得分:0)

尝试将返回类型更改为IEnumerable<KeywordsForPKs>。文档here表示返回集合的服务操作的返回类型必须为IEnumerable<T>IQueryable<T>