Длина не может быть меньше нуля.Имя параметра: длина с OData Client - PullRequest
0 голосов
/ 28 ноября 2018

Я использую клиент OData для получения данных из D365 AX.Ниже приведен фрагмент кода, который имеет проблему

var test = context.Employees
                    .AddQueryOption("$filter", $"EmployeeNumber eq '{query.EmployeeNumber}'");
                var result = await test.ExecuteAsync();

Я получаю следующее исключение

Сообщение: System.ArgumentOutOfRangeException: длина не может быть меньше нуля.Имя параметра: длина Трассировка стека: в System.String.Substring (int32 startIndex, Int32 length) в Microsoft.OData.TypeUtils.ParseQualifiedTypeName (String qualtiTypeName, String & namespaceName, String & typeName, Boolean & isCollectionJ.JD.Sata.serata.JData.Sata.serata.serata.Sata.serata.serata.Sata.serata.serataJ.serata.serataJ.serata.serataJ.serata.serataJ.serata.serataJ.serata.serataJ.serata.serata.ResolveType (String TypeName, Func 3 clientCustomTypeResolver, Boolean throwIfMetadataConflict) at Microsoft.OData.JsonLight.ODataJsonLightContextUriParser.ParseContextUriFragment(String fragment, Func 3 clientCustomTypeResolver, булева throwIfMetadataConflict, булева & isUndeclared) при Microsoft.OData.JsonLight.ODataJsonLightContextUriParser.ParseContextUri (ODataPayloadKind expectedPayloadKind, Func 3 clientCustomTypeResolver, Boolean throwIfMetadataConflict) at Microsoft.OData.JsonLight.ODataJsonLightContextUriParser.Parse(IEdmModel model, String contextUriFromPayload, ODataPayloadKind payloadKind, Func 3 clientCustomTypeResolver, булева needParseFragment, булева throwIfMetadataConflict) при Microsoft.OData.JsonLight.ODataJsonLightDeserializer.ReadPayloadStart (ODataPayloadKind payloadKind, PropertyAndAnnotationCollector, свойствоAndAnnotationCollector, логическое значение isReadingNestedPayload, логическое значение allowEmptyPayload) в файле Microsoft.OData.JsonLightInfoDayDefDefenceDataDightDataDightDataDejectDataDextPataDightDataDataDextDataDataDataDextPataicrosoft.OData.JsonLight.ODataJsonLightInputContext.DetectPayloadKind (ODataPayloadKindDetectionInfo detectionInfo) в Microsoft.OData.Json.ODataJsonFormat.DetectPayloadKindImplementation (ODataMessageInfo messageInfo, ODataMessageReaderSettings настройки) в Microsoft.OData.Json.ODataJsonFormat.DetectPayloadKind (ODataMessageInfo messageInfo, ODataMessageReaderSettings настройки) в Microsoft.OData.ODataMessageReader.DetectPayloadKind () в Microsoft.OData.Client.Materialization.ODataMaterializer.CreateODataMessageReader (IODataResponseMessage responseMessage, ResponseInfo responseInfo, ODataPayloadKind & payloadKind) в Microsoft.OData.Client.Materialization.ODataMaterializer.CreateMaterializerForMessage (IODataResponseMessage responseMessage, ResponseInfo responseInfo, тип materializerType, QueryComponents queryComponents, план ProjectionPlan, ODataPayloadKind payloadKind) в Microsoft.OData.Client.MaterializeAtom..ctor (ResponseInfo responseInfo, QueryComponents queryComponents, ProjectionPплан lan, IODataResponseMessage responseMessage, ODataPayloadKind payloadKind) в Microsoft.OData.Client.QueryResult.CreateMaterializer (план ProjectionPlan, ODataPayloadKind payloadKind) в Microsoft.OData.Client.QueryResult.ProODlan.lient.DataServiceRequest.EndExecute [TElement] (Источник объекта, контекст DataServiceContext, метод String, IAsyncResult asyncResult) в Microsoft.OData.Client.DataServiceQuery 1.EndExecute(IAsyncResult asyncResult) at System.Threading.Tasks.TaskFactory 1.requireSynchronization) --- Конец трассировки стека из предыдущего места, где было сгенерировано исключение ---

Kinldy, помогите мне в этом.

1 Ответ

0 голосов
/ 30 ноября 2018

Кажется, что существует конфликт между вашей строкой edmx и клиентским кодом, сгенерированным OData V4 Client Code Generator.Я столкнулся с той же ошибкой, и причина была в том, что я сохранил строку edmx в отдельном файле, и я использовал старую версию файла.В конце концов, обновление строкового файла edmx устранило ошибку.

...