Вызов API из службы приложений Azure в API, размещенный на виртуальной машине Azure. - Ошибка Была сделана попытка получить доступ к сокету способом, запрещенным его разрешениями доступа. - PullRequest
1 голос
/ 05 июля 2019

Вызов API из службы приложений Azure в API, размещенный на виртуальной машине Azure

Я получаю следующее сообщение об ошибке, когда бот My Azure Chat выполняет вызовы API, размещенного на виртуальной машине Azure. Моя служба приложений / бот веб-приложения находятся в одной и той же группе ресурсов.

Произошла одна или несколько ошибок. (Была сделана попытка получить доступ к сокету способом, запрещенным его правами доступа) ---> System.Net.Http.HttpRequestException: была сделана попытка получить доступ к сокет в пути, запрещенном его правами доступа ---> System.Net.Sockets.SocketException: была сделана попытка получить доступ к сокет в пути, запрещенном его правами доступа на System.Net.Http.ConnectHelper.ConnectAsync (Строковый хост, порт Int32, CancellationToken cancellationToken) --- Конец внутреннего исключения трассировка стека --- в System.Net.Http.ConnectHelper.ConnectAsync (Строковый хост, порт Int32, Отмена взята Отмена взята) в System.Threading.Tasks.ValueTask 1.get_Result() at System.Net.Http.HttpConnectionPool.CreateConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken) at System.Threading.Tasks.ValueTask 1.get_Result () в System.Net.Http.HttpConnectionPool.WaitForCreatedConnectionAsync (ValueTask 1 creationTask) at System.Threading.Tasks.ValueTask 1.get_Result ()
в System.Net.Http.HttpConnectionPool.SendWithRetryAsync (HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken)
в System.Net.Http.RedirectHandler.SendAsync (HttpRequestMessage запрос, CancellationToken CancellationToken) в System.Net.Http.HttpClient.FinishSendAsyncBuffered (Task`1 sendTask, Запрос HttpRequestMessage, CancellationTokenSource cts, Boolean disposeCts)

Я получаю эту ошибку только , когда вызовы API сделаны из Azure. Мой чат-чат разработан с .net core 2.2 / bot Framework v4 / C #. Мой VM API использует порт 80.

Примите во внимание ваши предложения по устранению этой ошибки.

1 Ответ

1 голос
/ 08 июля 2019

В случае ошибки, запрещенной для сокета, вы можете правильно проверить следующее:

  • Порт API 80 прослушивает размещенную виртуальную машину.
  • Порт не используется другим приложением, услуга или процесс.В Windows VM вы можете запустить netstat -anbo в CMD как учетную запись администратора, чтобы проверить это.
  • Проблема безопасности или брандмауэра.Если у вас есть NSG, связанный с этой подсетью ВМ или сетевым интерфейсом ВМ, вам нужно добавить правило для входящих подключений, чтобы разрешить порт 80 для службы веб-приложений.Кроме того, вы должны включить этот входящий порт на брандмауэре виртуальной машины, если вы используете брандмауэр внутри виртуальной машины.См. Диагностика проблемы фильтра сетевого трафика виртуальной машины .
  • Ограничения доступа в службе приложений Azure.Проверьте, запрещает ли какое-либо правило IP-доступа запрещать доступ извне службы приложения.

Надеюсь, это поможет вам.

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