Что может вызвать разницу в поведении кода между локально запущенными и развернутыми экземплярами - PullRequest
0 голосов
/ 12 ноября 2018

Справочная информация: У нас есть веб-приложение (C # back end), которое контролирует рабочий процесс на складе. Это включает в себя сортировку продуктов в различные цветные корзины, которые имеют смысл. Когда вы закончите обработку на своей станции, веб-сайт определяет, в какой цветовой корзине идет следующий пункт. Вы «прикрепляете» эти контейнеры к своей рабочей станции, а когда они сделаны, вы «отсоединяете» их, и они движутся вперед. Если у вас нет определенного цветного лотка, вы можете «запросить» тот, который приводит к печати штрих-кода, который можно прикрепить к пустому лотку, создав, таким образом, «новый» лоток.

Проблема: Было замечено, что на одной конкретной странице функциональность запроса на складе не работает. Он работает на складе на всех других страницах, где есть функциональность запроса. Это уже странно, но становится страннее! Когда я перехожу эту страницу на моей локальной машине, она работает как задумано! Я добавил в код несколько операторов регистрации, чтобы попытаться выявить проблему в экземпляре Azure, и вот что я нашел.

Как только мы создадим запись в БД и сгенерируем штрих-код в контроллере, мы передадим эти данные клиенту (мы убедились, что данные базы данных создаются правильно). На клиенте мы пытаемся «присоединить» рабочую станцию ​​в javascript. Ниже приведен фрагмент этого процесса, который просматривает список всех возможных типов контейнеров, чтобы убедиться, что еще нет одного открытого типа и что тип соответствует тому, что вы запросили, затем он использует экземпляр контейнера для вызова метода присоединения:

var container = sidebar.containers.find(c => !c.isOpen() && c.type === data.container.find("PURPLE BIN");
container.open(data.containerId);
if ($("#sortBinType").val() === container.type)
{
    do more stuff on the screen...

Теперь то, что я на самом деле возвращаю в экземпляре Azure, - это всегда первый контейнер в sidebar.containers (типа «GREEN BIN»), который даже не подходит для этой страницы. Это приводит к сбою метода open из-за несоответствия данных. Условие if не выполняется, потому что тип не совпадает, поэтому запрос просто умирает в этой точке. Мы заметили, что если мы удаляем любой параметр в операторе find, экземпляр Azure возвращает ожидаемый результат (либо первый не открытый контейнер, либо правильный тип). Однако два вместе не делают.

Это много информации, которая в основном сводится к тому, у кого-нибудь есть мысли по поводу того, что может приводить к тому, что это утверждение поиска работает неправильно только на одной странице и только в Azure? Мы знаем, что это не логическая проблема, потому что один и тот же код работает на других страницах и в других средах. Мы неоднократно переносили его в Azure, и он работает таким образом на нескольких рабочих станциях, поэтому это не является конкретной проблемой компьютера. У меня почти нет идей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...