6

我正在使用 CRM2016

我创建了一个测试实体来复制问题

我没有对其进行任何自定义。我用默认字段和表单创建了一条新记录。然后我尝试访问它的webapi

http://localhost/CRMDataBase/api/data/v8.0/new_test(bgcs0249-0a06-e611-941a-003002djlnc)

它工作得很好,并带来了记录。然后我把记录删了,给它创建了一个业务流程,只有一个阶段和一个步骤

我激活它并添加了一个新的测试记录并尝试访问 webapi url,它抛出了以下错误

{ "error":{ "code":"","message":"属性 'stageid' 属于无法识别的 EdmPropertyKind。实体 new_test 具有重复的导航属性名称。所有属性名称(导航和结构属性)在实体 ","innererror":{ "message":"属性 'stageid' 属于无法识别的 EdmPropertyKind。实体 new_test 具有重复的导航属性名称。所有属性名称(导航和结构属性)在实体中必须是唯一的 ","type ":"Microsoft.Crm.CrmHttpException","stacktrace":" 在 Microsoft.Crm.Extensibility.OData.CrmODataEntityTypeSerializer.CreateSelectExpandNode(EntityInstanceContext entityInstanceContext)\r\n 在 System.Web.OData.Formatter。Serialization.ODataEntityTypeSerializer.WriteEntry(对象图,ODataWriter writer,ODataSerializerContext writeContext)\r\n
在 System.Web.OData.Formatter.Serialization.ODataFeedSerializer.WriteFeed(IEnumerable enumerable,IEdmTypeReference feedType,ODataWriter writer,ODataSerializerContext writeContext)\r\n 在 Microsoft.Crm.Extensibility.OData.CrmODataFeedSerializer.WriteObject(对象图,类型类型, ODataMessageWriter messageWriter, ODataSerializerContext writeContext)\r\n 在 System.Web.OData.Formatter.ODataMediaTypeFormatter.WriteToStream(类型类型, 对象值, 流 writeStream, HttpContent 内容, HttpContentHeaders contentHeaders)\r\n 在 System.Web.OData.Formatter .ODataMediaTypeFormatter.WriteToStreamAsync(Type type, Object value, Stream writeStream, HttpContent content, TransportContext transportContext,CancellationToken cancelToken)\r\n--- 从先前引发异常的位置结束堆栈跟踪 ---\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n 在 System.Runtime .CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.WebHost.HttpControllerHandler.d__1b.MoveNext()","internalexception":{ "message":"Property 'stageid' is of an unrecognized EdmPropertyKind.","type":"Microsoft.OData.Core.ODataException","stacktrace":" 在 Microsoft.OData.Core.UriParser.Parsers.SelectPathSegmentTokenBinder.ConvertNonTypeTokenToSegment(PathSegmentToken tokenIn, IEdmModel 模型, IEdmStructuredType edmType, ODataUriResolver 解析器) \r\n 在微软。OData.Core.UriParser.Visitors.SelectPropertyVisitor.ProcessTokenAsPath(NonSystemToken tokenIn)\r\n 在 Microsoft.OData.Core.UriParser.Visitors.SelectPropertyVisitor.Visit(NonSystemToken tokenIn)\r\n 在 Microsoft.OData.Core.UriParser。 Parsers.SelectBinder.Bind(SelectToken tokenIn)\r\n 在 Microsoft.OData.Core.UriParser.Parsers.SelectExpandBinder.Bind(ExpandToken tokenIn)\r\n 在 Microsoft.OData.Core.UriParser.Parsers.SelectExpandSemanticBinder.Bind( IEdmStructuredType elementType、IEdmNavigationSource navigationSource、ExpandToken expandToken、SelectToken selectToken、ODataUriParserConfiguration 配置)\r\n 在 Microsoft.OData.Core.UriParser.ODataQueryOptionParser.ParseSelectAndExpand()\r\n 在 Microsoft.Crm.Extensibility.OData.CrmODataEntityTypeSerializer。CreateSelectExpandNode(EntityInstanceContext entityInstanceContext)" } } } }

如果我删除所有记录-> 停用业务流程-> 添加新数据然后检查 webapi,它工作正常。但是当我激活业务流程并添加新数据时,我收到上述错误 PS:我没有对业务流程和实体进行任何编码/自定义。但我仍然收到此错误

可以做些什么来解决这个问题?

4

1 回答 1

1

看起来像 Web API 端点中的错误。社区论坛也提到了同样的问题......

Web API 端点仍然有一些限制,它并没有完全模仿 OrganizationService 的行为,因此,这将适用于下一个版本(9.xx),所以如果您遇到困难,可以尝试应用更新(然后使用 v8.1 in url)作为,或提出 MS 支持案例。

如果您仍然卡住,请尝试使用 OData / OrganizationService 进行相同的操作。

于 2016-10-12T19:19:15.600 回答