Старое LERS API больше не работает?

Попытался собрать утилиту для синхронизации серверов,
Собранная утилита после запуска выдает ошибку 400 запроса REST.
Как я понял, запросы к старому LERS API преобразуются в запросы к REST API, и при вызове Lers.Data.ServerData.Export(int, DateTime, DateTime, DeviceDataType, CancellationToken) происходит ошибка из-за того, что в REST API не совпадают параметры со старым API. Правильно ли я понимаю, что старое LERS API не работает?

2025-03-13 16:39:05.8013 ==================================
===== Запущена синхронизация данных между серверами ЛЭРС УЧЁТ…

2025-03-13 16:39:05.8583 Загрузка конфигурации…
2025-03-13 16:39:06.0363 Загрузка последних параметров из файла C:\Users\ae_gubarev\AppData\Local\LERS\ServerSync.Data.json
2025-03-13 16:39:06.0383 Подключение к серверу 109.198.109.171:10000
2025-03-13 16:39:07.0593 Подключение к серверу app6b:10010
2025-03-13 16:39:07.1343 Экспорт данных по 2 точкам учёта за интервал 06.03.25 00:00:00 - 13.03.25 16:39:07
2025-03-13 16:39:07.2093 Ошибка сихронизации серверов. Lers.Networking.RequestProcessingException: Bad Request

{“type”:“RFC 9110 - HTTP Semantics or more validation errors occurred.”,“status”:400,“errors”:{“DataTypes”:[“The DataTypes field is required.”]},“traceId”:“00-d281178ecb66387d9744fe97daa5848c-38f3254c48a67970-00”}
в Lers.Http.RestClient.d__30.MoveNext()
— Конец трассировка стека из предыдущего расположения, где возникло исключение —
в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
в System.Runtime.CompilerServices.ConfiguredTaskAwaitable1.ConfiguredTaskAwaiter.GetResult() в Lers.Http.RestClientExtensions.<PutAsync>d__11.MoveNext()
— Конец трассировка стека из предыдущего расположения, где возникло исключение —
в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
в System.Runtime.CompilerServices.ConfiguredTaskAwaitable1.ConfiguredTaskAwaiter.GetResult() в Lers.Http.Data.ExportExtensions.<ExportData>d__0.MoveNext() --- Конец трассировка стека из предыдущего расположения, где возникло исключение --- в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) в System.Runtime.CompilerServices.ConfiguredTaskAwaitable1.ConfiguredTaskAwaiter.GetResult()
в Lers.Data.ServerData.d__8.MoveNext()
— Конец трассировка стека из предыдущего расположения, где возникло исключение —
в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
в System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
в ServerSync.Program.d__2.MoveNext() в D:\tmp\ServerSync-master\ServerSync\Program.cs:строка 78

Эта утилита основана на Lers Framework, он требует полного совпадения версий серверов, так что да, она не заработает. Lers Framework использует внутреннюю версию REST API, а там возможны несовместимые изменения.

Получается, что как минимум одна из функций старого API теперь не работает, хотя в документации это не отмечено. При её вызове с правильно указанными параметрами, возникает ошибка 400 внутреннего REST API.

Уточните, пожалуйста, оба Сервера имеют одинаковую версию? Если да, то какая это версия? Как именно собиралась утилита?

Сервер экспорта 3.60.0
Сервер импорта 3.60.3
Версии очень близкие.
Собиралось вот так:

Как выше писал @achi:

Обновите оба Сервера до одинаковой версии и проверьте воспроизведение ошибки после этого.

Невозможно сделать, это чужой сервер.
Странное ЛЭРС API, для которого требуется полное совпадение версий.
Как тебе такое, Илон Маск?

Полная проверка версий самая обычная практика, которая позволяет избежать большинства банальных ошибок. Мы при реализации утилиты выбрали такой подход. Если вас не устраивает такой подход, вы можете сделать ответвление от репозитория данной утилиты и переписать ее, убрав проверку совпадения версий, например. Но вам стоит учитывать, что корректность данных при таком импорте не может быть гарантирована.

Именно поэтому мы не рекомендуем его использовать. Как замену мы разработали REST API.

По ссылке, по которой вы скачали утилиту, прямо написано, что она не доработана и нормально не функционировала даже на наших серверах.

Если вы хотите её использовать, нужно переписать её для того, чтобы использовался REST API.

Эта тема была автоматически закрыта через 5 дней после последнего ответа. В ней больше нельзя отвечать.