Как вызвать On Premise API из Microsoft Bot C # - PullRequest
0 голосов
/ 29 мая 2019

Мне не удается выполнить вызовы On Premise API из MS Bot (v4) C # после развертывания в Azure. Вызов API On Premise работает нормально при локальном тестировании с эмулятором.

В соответствии с рекомендацией службы поддержки Microsoft, я уже пытался использовать канал Direct Line для веб-чата, но это не помогает.

                AppContext.SetSwitch("System.Net.Http.UseSocketsHttpHandler", false);

                HttpWebRequest webRequest = HttpWebRequest.CreateHttp(updatedURL);
                webRequest.Method = currentStep.StepsServiceCall.Method;
                webRequest.ContentType = "application/json";
                webRequest.KeepAlive = true;

                if (!String.IsNullOrEmpty(currentStep.StepsServiceCall.Headers))
                {
                    string updatedJson = currentStep.InjectPropertyValuesJson(currentStep.StepsServiceCall.Headers, properties);

                    webRequest.ContentLength = updatedJson.Length;

                    using (var streamWriter = new StreamWriter(webRequest.GetRequestStream()))
                    {
                        streamWriter.Write(updatedJson);
                        streamWriter.Flush();
                        streamWriter.Close();
                    }
                }

                using (HttpWebResponse response = webRequest.GetResponse() as HttpWebResponse)
                {
                    using (StreamReader reader = new StreamReader(response.GetResponseStream()))
                    {
                        string content = reader.ReadToEnd();

                        return await currentStep.ProcessResponseText(context, cancellationToken, content);
                    }

Ошибка ниже из журналов службы приложений Azure.

Microsoft.Bot.Builder.Integration.AspNet.Core.BotFrameworkHttpAdapter: Обнаружено исключение: при отправке запроса произошла ошибка. Ошибка 12029 при вызове WINHTTP_CALLBACK_STATUS_REQUEST_ERROR «Не удалось установить соединение с сервером».

1 Ответ

1 голос
/ 29 мая 2019

Мне кажется, что сообщение об ошибке выглядит достаточно прямо, служба приложений Azure не может найти URL-адрес, на котором размещен локальный API. Предполагая, что сервер, на котором размещен API, отвечает на ICMP-пакеты (эхо-запросы), я бы попробовал следующее:

  1. Пингуйте URL с вашего локального компьютера разработки - это можно сделать из командной строки / терминала ping <url-here>.
  2. В Azure доступ к интерфейсу KUDU - перейдите на App Service > Development Tools > Advanced tools > Go
  3. В одном из выпадающих меню (инструменты, которые я считаю) должна быть опция командной строки.
  4. Попытка пропинговать URL в консоли KUDU.
  5. В случае сбоя проверки связи вам потребуется настроить маршрут или обновить URL-адрес, который вы используете для использования полного доменного имени, согласно этого ответа .
  6. Если полное доменное имя не работает, гибридные подключения Azure также являются потенциальным решением вашей проблемы - видео доступно здесь .
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...