Бот работает в эмуляторе Bot Framework на локальном компьютере, но не после его развертывания в Microsoft Azure: «Код состояния HTTP NotFound» (2-й поток) - PullRequest
0 голосов
/ 27 июня 2019

Это моя вторая тема об этой проблеме, и я попробовал все предложения, представленные в последней теме об этом. URL-адрес последнего потока находится здесь: Бот работает в эмуляторе Bot Framework на локальном компьютере, но не после его развертывания в Microsoft Azure - код состояния HTTP NotFound .

Я следовал точным указаниям на https://docs.microsoft.com/en-us/azure/bot-service/bot-builder-deploy-az-cli?view=azure-bot-service-4.0&tabs=newrg.

После выполнения этих инструкций, связанных с интерфейсом командной строки Azure, у меня было три типа ресурсов, которые были созданы под моим идентификатором подписки Azure: регистрация каналов Bot, служба приложений и план обслуживания приложений.

К сожалению, когда я ввожу сообщение в окне «Тестирование в веб-чате» в разделе «Управление ботами» для ресурса «Регистрация бот-каналов», я получаю ответное сообщение «Не удалось отправить повтор».

Когда я захожу на каналы в разделе «Управление ботами» для ресурса «Регистрация каналов ботов», нажимаю «Проблемы» в разделе «Здоровье», я вижу следующее сообщение: «Произошла ошибка при отправке этого сообщения вашему боту: статус HTTP code InternalServerError. "

Вот некоторые дополнительные детали, которые были выделены в последней теме. Я определенно принял их во внимание, как вы прочитаете ниже.

Перед вводом этого кода в каталоге бота был создан файл «.deployment», а затем был создан zip-файл, содержащий файл «.deployment»: z - источник развертывания веб-приложения config-zip --resource-group "" --name "" --src "code.zip"

Я перешел по этой ссылке и увидел 21 DLL-файл, указанный на этой странице в разделе «WWWROOT»: https:. / scm.azurewebsites.net/dev/wwwroot/

Я пошел по этому URL (https: //.scm.azurewebsites.net/dev/wwwroot/: vs.output), нажал кнопку «Выполнить» и не увидел ничего необычного в правой части экрана в разделе «Вывод» , В последнем сообщении в разделе «Вывод» отображается «200.0 OK» после «Нажмите на http: //.azurewebsites.net, чтобы открыть ваш сайт. 2019-06-27T17: 52: 04 PID [32228] Ответ на отправку информации». Когда я нажмите на ссылку «http: //.azurewebsites.net», откроется новая вкладка, и вверху я вижу это сообщение: «Bot Started.»

Я также пытался опубликовать из Visual Studio.

При попытке публикации из Visual Studio я следовал инструкциям на этой странице: https://docs.microsoft.com/en-us/visualstudio/deployment/deploying-applications-services-and-components?view=vs-2019

Я создал новую службу приложений Azure, выбрал правильную подписку и группу ресурсов, отключил Application Insights, так как это сейчас не нужно, а затем нажал «Создать».

Затем я нажал «Опубликовать».

Затем я создал регистрацию каналов ботов и добавил целевой URL из ссылки для редактирования в верхней части экрана «Публикация» в Visual Studio. Этот бот не работал при тестировании в веб-чате.

Создание бота веб-приложения в Azure на этом этапе не помогает, так как для его создания требуется стандартный эхо-шаблон или базовый шаблон бота.

Просто еще раз уточню, бот, который я пытаюсь протестировать в Azure, прекрасно работает в эмуляторе бота после его запуска в Visual Studio. Где-то на этапе публикации / развертывания в Azure возникает проблема. Что мы можем сделать, чтобы решить эту проблему?


UPDATE:

Я последовал совету Мэтта Стэннетта, который добавил комментарий под этой веткой.

Я отправился в «Мониторинг»> «Журналы служб приложений» и включил ведение журнала приложений (файловой системы), а также подробные сообщения об ошибках и отслеживание невыполненных запросов.

Далее я перешел на вкладку «Мониторинг»> «Поток журнала». Я держал эту вкладку открытой и загружал веб-чат в другую вкладку, чтобы просматривать журналы в реальном времени.

Я преобразовал HTML-код в формат PDF и прочитал результаты.

Вот информация верхнего уровня относительно сообщения об ошибке:

HTTP-ошибка 500.0 - внутренняя ошибка сервера

Невозможно отобразить страницу, поскольку произошла внутренняя ошибка сервера.

Наиболее вероятные причины:

  • IIS получил запрос; Хауver, во время обработки запроса произошла внутренняя ошибка.Основная причина этой ошибки зависит от того, какой модуль обрабатывает запрос и что происходило в рабочем процессе, когда эта ошибка возникла.
  • IIS не смог получить доступ к файлу web.config для веб-сайта или приложения.Это может произойти, если разрешения NTFS установлены неправильно.
  • IIS не удалось обработать конфигурацию для веб-сайта или приложения.
  • Пользователь, прошедший проверку подлинности, не имеет разрешения на использование этой библиотеки DLL.
  • Запрос сопоставлен с управляемым обработчиком, но функция расширяемости .NET не установлена.

Возможные варианты:

  • Убедитесь, что разрешения NTFS для файла web.config указаны правильно, и разрешите доступ к учетной записи компьютера веб-сервера.
  • Проверьте журналы событий, чтобы узнать, не была ли в журнале какая-либо дополнительная информация.
  • Проверьте разрешения для DLL.
  • Установите функцию .NET Extensibility, если запрос сопоставлен с управляемым обработчиком.
  • Создайте правило трассировки для отслеживания неудачных запросов для этого кода состояния HTTP.Для получения дополнительной информации о создании правила трассировки для неудачных запросов нажмите здесь.

Подробная информация об ошибке:

Код ошибки: 0x00000000

Модуль: AspNetCoreModule

Обработчик: aspNetCore

Уведомление: ExecuteRequestHandler

Метод входа: анонимный

Пользователь входа: анонимный

Дополнительная информация:

Эта ошибка означает, что при обработке запроса возникла проблема.Запрос был получен веб-сервером, но во время обработки произошла неустранимая ошибка, вызвавшая ошибку 500. Посмотреть больше информации »

1 Ответ

0 голосов
/ 01 июля 2019

Просто быстрое разъяснение, поскольку, как представляется, есть две различные проблемы:

  1. Ваш экземпляр эмулятора Bot Framework, похоже, имеет проблемы - я бы порекомендовал удалить его, а затем получить последнюю версию из здесь .

  2. Ваш бот не работает в рабочей среде - для локальной отладки рабочего канала вам необходимо убедиться, что идентификатор приложения и пароль приложения в настройках приложения заполнены значениями из Azure, а затем вам нужно Вы можете следовать остальным инструкциям ниже, чтобы общаться в производственном канале (Teams, WebChat, DirectLine и т. д. NOT в эмуляторе) и запускать рабочий канал в соответствии с вашим локальным кодом, чтобы вы могли устанавливать точки останова и проверять переменные для отладки там, где проблема.

Инструкции на основе руководств здесь и здесь :

Методы отладки

  • Убедитесь, что бот работает локально.
  • Проверьте поток журнала или файлы журнала через Kudu в разделе Инструменты разработки> Расширенные инструменты для службы приложений. Вы также можете включить Журналы приложений в разделе Мониторинг журналов службы приложений для своей службы приложений, а затем просмотреть поток журналов в разделе «Поток журналов» своей службы приложений, пока вы тестируете своего бота в веб-чате в другой вкладке / окне.
  • Убедитесь, что записи Настройки приложения существуют и являются правильными (пароль, идентификатор приложения и т. Д.).
  • Убедитесь, что ngrok установлен.
  • Откройте решение в Visual Studio.
  • Запустите отладку в Visual Studio.
  • Запишите номер порта в адресе локального хоста для открытой веб-страницы (это должно быть 3978).
  • Перейдите в каталог, в который вы распаковали ngrok.
  • Введите cmd в адресную строку и нажмите ввод, чтобы открыть новое окно командной строки.
  • Создайте общедоступный URL-адрес, который направляет весь трафик http через указанный порт на ваш компьютер:
  • ngrok http 3978 --host-header = localhost
  • Скопируйте URL-адрес пересылки https.
  • Это должно быть в форме https://(characters - здесь) .ngrok.io .
  • Не закрывайте окно командной строки с запущенным ngrok, поскольку после его закрытия URL-адрес больше не будет доступен.
  • Прекратить отладку.
  • На портале Azure откройте ресурс бота веб-приложения.
  • Перейдите в «Управление ботами»> «Настройки»> «Конфигурация» и скопируйте URL-адрес в поле описания, чтобы он где-то был сохранен.
  • Замените что-либо в текстовом поле URL конечной точки перед / api / messages URL-адресом ngrok.
  • Окончательный URL-адрес должен иметь вид https://(ngrok -url) / api / messages .
  • Нажмите кнопку «Сохранить» (для включения кнопки «Сохранить» необходимо щелкнуть за пределами текстового поля).
  • Перейдите в раздел Служба приложений> Настройки> Конфигурация и запишите значение для MicrosoftAppId и MicrosoftAppPassword.
  • На портале Azure на вкладке Конфигурация> Параметры приложения службы приложений Визуально скопируйте значения записей MicrosoftAppId и MicrosoftAppPassword в соответствующие записи в файле appsettings.json (поскольку вы будете запускать рабочую конечную точку на локальном компьютере). код, вам нужно установить все соответствующие ключи).
  • Сохраните ваши изменения в Visual Studio.
  • Начать отладку в Visual Studio.
  • Открытый тест в веб-чате в Azure.
  • Проверка работоспособности бота.
  • Вы должны достичь всех точек останова, которые вы установили в коде.

ОЧИСТИТЬ ШАГИ - ВАЖНО !!!

  • Восстановите исходный URL-адрес конечной точки обмена сообщениями для бота веб-приложения в Azure И сохраните изменение.
  • Отменить / отменить любые изменения в файле appsettings.json.
  • Закройте окно командной строки с запущенным ngrok.
  • Закрыть эмулятор Bot Framework
...