Почему Logic Apps Oracle connector использует как 400, так и 404 для выражения «не найдено»?

#azure-logic-apps

#azure-logic-apps

Вопрос:

У меня есть несколько логических приложений, которые используют Oracle DB connector для извлечения данных из базы данных Oracle через локальный шлюз данных. Некоторые из них используют действие Get Row, которое возвращает единственную строку, которую оно находит с использованием первичного ключа таблицы.

В случаях, когда мы передаем нераспознанный идентификатор, действие завершается неудачей с кодом состояния либо 400, либо 404. Я уверен в этом, и это не ошибка. Я не видел, чтобы какое-либо одно приложение Logic переключалось между этими двумя, но разные приложения Logic в одной подписке и запрашивающие одну и ту же базу данных вернули либо 400, либо 404.

Почему соединитель переключается между использованием двух разных кодов состояния для представления одного и того же результата?

Ответ №1:

Для решения этой проблемы, пожалуйста, проверьте, вводите ли вы тот же тип идентификатора строки (или другие параметры) в действие «Получить строку». Большая часть ошибок 400 была вызвана несоответствием типа между переданным параметром и полученным параметром или несоответствием полей. И, пожалуйста, также проверьте, совпадает ли ваш шлюз с приложением two logic, шлюз также может вызвать ошибку 400/404.

Если все конфигурации двух приложений logic одинаковы, я думаю, вы можете обратиться в службу поддержки на портале azure, перейдя на эту страницу, чтобы обратиться за помощью в службу поддержки azure. Ответ на ваш вопрос трудно найти в stack overflow.

Ответ №2:

Проблема оказалась в том, что в одной из таблиц не было первичного ключа, несмотря на то, что мы полагали, что он был. Соединитель завершается с ошибкой запроса 400, если таблица не определяет первичный ключ, и 404 не найден, если таблица верна, но идентификатор отсутствует.

В этом случае сообщение об ошибке особенно бесполезно, но теперь проблема понятна.