Dynamics crm 长度不能小于零。参数名称:OData客户端的长度
我正在使用OData客户端从D365 AX获取数据。下面是出现问题的一段代码Dynamics crm 长度不能小于零。参数名称:OData客户端的长度,dynamics-crm,odata,dynamics-365,Dynamics Crm,Odata,Dynamics 365,我正在使用OData客户端从D365 AX获取数据。下面是出现问题的一段代码 var test = context.Employees .AddQueryOption("$filter", $"EmployeeNumber eq '{query.EmployeeNumber}'"); var result = await test.ExecuteAsync(); 我得到以下异常 消息:System.ArgumentOutO
var test = context.Employees
.AddQueryOption("$filter", $"EmployeeNumber eq '{query.EmployeeNumber}'");
var result = await test.ExecuteAsync();
我得到以下异常
消息:System.ArgumentOutOfRangeException:长度不能小于
大于零。参数名称:长度堆栈跟踪:
at System.String.Substring(Int32 startIndex,Int32 length)
在Microsoft.OData.TypeUtils.ParseQualifiedTypeName(String qualifiedTypeName、String和namespaceName、String和typeName、Boolean和isCollection)
位于Microsoft.OData.JsonLight.odatajsonlightcontextureparser.ResolveType(字符串类型名,Func3客户端自定义类型解析器,布尔throwifmetadatadataconflict)
位于Microsoft.OData.JsonLight.odatajsonlightcontextriparser.parseContextrifragment(字符串片段,Func
3客户端自定义类型解析器,布尔throwifmetadatadataconflict,布尔值&未声明)
在Microsoft.OData.JsonLight.odatajsonlightContextRiparser.ParseContextUri(ODataPayloadKind expectedPayloadKind,Func3客户端自定义类型解析程序,布尔throwIfMetadataConflict)
在Microsoft.OData.JsonLight.odatajsonlightContextureParser.Parse(IEdmModel模型、字符串ContextureFromPayload、ODataPayloadKind payloadKind、Func
3客户端自定义类型解析器、布尔needParseFragment、布尔throwIfMetadataConflict)
在Microsoft.OData.JsonLight.ODataJsonLightDeserializer.ReadPayloadStart(ODataPayloadKind payloadKind,PropertyAndNotationCollector PropertyAndNotationCollector,Boolean isReadingNestedPayload,Boolean allowEmptyPayload)
在Microsoft.OData.JsonLight.ODataJsonLightPayloadKindDetectionDeserializer.DetectPayLoadKindKind(ODataPayloadKindDetectionInfo detectionInfo)中
位于Microsoft.OData.JsonLight.ODataJsonLightInputContext.detectPayLoadKindDetectionInfo(ODataPayloadKindDetectionInfo detectionInfo)
位于Microsoft.OData.Json.ODataJsonFormat.DetectPayloadKindImplementation(ODataMessageInfo、ODataMessageReaderSettings设置)
位于Microsoft.OData.Json.ODataJsonFormat.DetectPayloadKind(ODataMessageInfo消息信息,ODataMessageReaderSettings设置)
在Microsoft.OData.ODataMessageReader.DetectPayloadKind()上
在Microsoft.OData.Client.Materialization.ODataMaterializer.CreateODataMessageReader(IODataResponseMessage responseMessage、ResponseInfo ResponseInfo、ODataPayloadKind和payloadKind)
在Microsoft.OData.Client.Materialization.ODataMaterializer.CreateMeterialPerformMessage(IODataResponseMessage responseMessage,ResponseInfo ResponseInfo,类型MaterialType,QueryComponents QueryComponents,ProjectionPlan,ODataPayloadKind payloadKind)
在Microsoft.OData.Client.MaterializeAtom..ctor(ResponseInfo ResponseInfo、QueryComponents QueryComponents、ProjectionPlan计划、IODataResponseMessage responseMessage、ODataPayloadKind payloadKind)
在Microsoft.OData.Client.QueryResult.CreateMaterializer(ProjectionPlan计划,ODataPayloadKind payloadKind)
在Microsoft.OData.Client.QueryResult.ProcessResult[TElement](ProjectionPlan)上
在Microsoft.OData.Client.DataServiceRequest.EndExecute[TElement](对象源、DataServiceContext上下文、字符串方法、IAsyncResult asyncResult)
在Microsoft.OData.Client.DataServiceQuery1.EndExecute(IAsyncResult asyncResult)
在System.Threading.Tasks.TaskFactory中
1.FromAsyncCoreLogic(IAsyncResult iar,Func2 endFunction,Action
1 endAction,Task`1 Promission,布尔要求同步)
---来自引发异常的上一个位置的堆栈结束跟踪---
Kinldy在这方面帮助我。您的edmx字符串和OData V4客户端代码生成器生成的客户端代码之间似乎存在冲突。我遇到了同样的错误,原因是我将edmx字符串存储在一个单独的文件中,并且使用了该文件的旧版本。最后,更新edmx字符串文件解决了错误。我将edmx文件存储在单独的文件中,因为元数据太大,无法存储在字符串文字中。我也更新了edmx文件,但我面临着同样的问题。您是否也重新生成了客户端代码?如果没有,那么我建议您重新生成它,更新edmx文件,然后重试。如果我通过右键单击ODataClient.tt文件单击“运行自定义工具”,它也将更新edmx和客户端代码。我已经这样做了,但它还没有工作。一旦运行自定义工具,请确保将客户端代码指向新生成的edmx文件。使用OData v4代码生成器的7.5.1版和OData nuget包的7.5.2版。在将ODataClient.tt文件设置为使用外部文件后,我需要做的唯一修改是将所有“”替换为“”“在生成的xml文件中。一旦我这样做了,我就能够通过代理运行正常的D365FO查询。在此之前,我曾被指导在文件的顶部添加一个XML元素,删除edmx:edmx和edmx:DataServices元素,并将剩下的两个Schema元素组合在一起。如果我执行了所有这些步骤,我会收到OP声明的确切异常。