Я пытаюсь получить ход выпуска для определенного проекта с помощью клиента Octopus (источник github), вызывая конечную точку /api/progression/<project-id>
как это:
// _repository is of type IOctopusRepository
_repository.Client.Get<ProgressionResource>($"/api/progression/{projectId}");
Что сразу бросает OctopusDeserializationException
высказывание:
Невозможно обработать ответ от сервера: невозможно десериализовать текущий объект JSON (например, {"name":"value"}) в тип System.Linq.IOrderedEnumerable`1[Octopus.Client.Model.DashboardItemResource]", поскольку для этого типа требуется Массив JSON (например, [1,2,3]) для правильной десериализации. Чтобы исправить эту ошибку, либо измените JSON на массив JSON (например, [1,2,3]), либо измените десериализованный тип, чтобы он был обычным типом .NET (например, не примитивный тип, такой как целое число, а не тип коллекции, такой как массив или список), который можно десериализовать из объекта JSON. JsonObjectAttribute также можно добавить к типу, чтобы заставить его десериализоваться из объекта JSON. Путь 'Releases[0].Deployments.Environments-1.Id', строка 55, позиция 15.. Содержание ответа: { "Environments": [ { "Id": "Environments-1", "Name": "test- Окружающая среда" },
В каждом Релизе (типа ReleaseProgressionResource
) из Releases
есть реквизит Deployments
типа Dictionary<string,IOrderedEnumerable<DashboardItemResource>>
. Однако похоже, что клиент (который был создан для использования этого API) не может его сериализовать. Из сообщения об исключении кажется, что клиент пытается проанализировать это как массив JSON.
Вот пример Deployments
части ответа конечной точки в необработанном формате JSON (с некоторыми фиктивными данными):
"Deployments": {
"Environments-1": {
"Id": "Deployments-12345",
"ProjectId": "Projects-123",
"EnvironmentId": "Environments-1",
"ReleaseId": "Releases-12345",
"DeploymentId": "Deployments-12345",
"TaskId": "ServerTasks-12345",
"ReleaseVersion": "5.4.3",
"Created": "2016-09-22T21:26:38.886+00:00",
"QueueTime": "2016-09-22T21:26:38.855+00:00",
"CompletedTime": "2016-09-22T21:29:48.355+00:00",
"State": "Success",
"HasPendingInterruptions": false,
"HasWarningsOrErrors": false,
"ErrorMessage": "",
"Duration": "3 minutes",
"IsCurrent": true,
"IsPrevious": false,
"IsCompleted": true,
"Links": {
"Self": "/api/deployments/Deployments-12345",
"Release": "/api/releases/Releases-12345",
"Task": "/api/tasks/ServerTasks-12345"
}
}
}
У кого-нибудь есть идеи, что может происходить / что я могу делать неправильно? Заранее спасибо.