我正在使用CRM2016
我创建了一个测试实体来复制问题
我没有对它进行任何自定义。我用默认字段和表单创建了一个新记录。然后我尝试访问webapi
http://localhost/CRMDataBase/api/data/v8.0/new_test(bgcs0249-0a06-e611-941a-003002djlnc)
它运作良好并带来了记录。然后我删除了记录并为它创建了一个业务流程,只有一个阶段和一个步骤
我激活它并添加了一个新的测试记录,并试图访问webapi网址并抛出以下错误
{“error”:{ “code”:“”,“message”:“属性'stageid'属于无法识别的EdmPropertyKind。实体new_test具有重复的导航属性 名。所有属性名称(Navigation和Structural属性)必须是 实体中的唯一“,”innererror“:{ “message”:“属性'stageid'是一个无法识别的EdmPropertyKind。实体new_test具有重复的导航属性 名。所有属性名称(Navigation和Structural属性)必须是 在实体中是唯一的 “,”type“:”Microsoft.Crm.CrmHttpException“,”stacktrace“:”at Microsoft.Crm.Extensibility.OData.CrmODataEntityTypeSerializer.CreateSelectExpandNode(EntityInstanceContext entityInstanceContext)\ r \ n at System.Web.OData.Formatter.Serialization.ODataEntityTypeSerializer.WriteEntry(对象 graph,ODataWriter writer,ODataSerializerContext writeContext)\ r \ n
在 System.Web.OData.Formatter.Serialization.ODataFeedSerializer.WriteFeed(IEnumerable的 enumerable,IEdmTypeReference feedType,ODataWriter writer, ODataSerializerContext writeContext)\ r \ n at Microsoft.Crm.Extensibility.OData.CrmODataFeedSerializer.WriteObject(对象 图,类型类型,ODataMessageWriter messageWriter, ODataSerializerContext writeContext)\ r \ n at System.Web.OData.Formatter.ODataMediaTypeFormatter.WriteToStream(类型 type,Object value,Stream writeStream,HttpContent内容, HttpContentHeaders contentHeaders)\ r \ n at System.Web.OData.Formatter.ODataMediaTypeFormatter.WriteToStreamAsync(类型 type,Object value,Stream writeStream,HttpContent内容, TransportContext transportContext,CancellationToken cancellationToken)\ r \ n ---从前一个位置开始的堆栈跟踪结束 抛出异常的地方--- \ r \ n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务 任务)\ r \ n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)\ r \ n at System.Web.Http.WebHost.HttpControllerHandler.d__1b.MoveNext()”, “internalexception”:{ “message”:“属性'stageid'是一个无法识别的EdmPropertyKind。”,“type”:“Microsoft.OData.Core.ODataException”,“stacktrace”:“ 在 Microsoft.OData.Core.UriParser.Parsers.SelectPathSegmentTokenBinder.ConvertNonTypeTokenToSegment(PathSegmentToken tokenIn,IEdmModel模型,IEdmStructuredType edmType,ODataUriResolver 解析器)\ r \ n at Microsoft.OData.Core.UriParser.Visitors.SelectPropertyVisitor.ProcessTokenAsPath(NonSystemToken tokenIn)\ r \ n at Microsoft.OData.Core.UriParser.Visitors.SelectPropertyVisitor.Visit(NonSystemToken tokenIn)\ r \ n at Microsoft.OData.Core.UriParser.Parsers.SelectBinder.Bind(SelectToken tokenIn)\ r \ n at Microsoft.OData.Core.UriParser.Parsers.SelectExpandBinder.Bind(ExpandToken tokenIn)\ r \ n at Microsoft.OData.Core.UriParser.Parsers.SelectExpandSemanticBinder.Bind(IEdmStructuredType elementType,IEdmNavigationSource navigationSource,ExpandToken expandToken,SelectToken selectToken,ODataUriParserConfiguration 配置)\ r \ n at Microsoft.OData.Core.UriParser.ODataQueryOptionParser.ParseSelectAndExpand(个)\ r \ n 在 Microsoft.Crm.Extensibility.OData.CrmODataEntityTypeSerializer.CreateSelectExpandNode(EntityInstanceContext entityInstanceContext)” } }}
如果我删除所有记录 - >停用业务流程 - >添加新数据,然后检查webapi,它工作正常。但是当我激活业务流程并添加新数据时,我收到了上述错误 P.S:我没有对业务流程和实体进行任何编码/定制。但我仍然收到此错误
可以采取哪些措施来解决这个问题?
答案 0 :(得分:1)
看起来像Web API端点中的错误。 Community forums也引用同样的问题......
Web API端点仍有一些限制,并且它不能完全模仿OrganizationService行为,因此,对于下一个版本(9.xx),如果您遇到困难,可能尝试应用更新(然后使用v8) .1在网址中,或提出MS支持案例。
如果你仍然卡住,可以尝试使用OData / OrganizationService。