Почему я могу запускать внешние HTTP-вызовы из веб-приложения. Net Core 3.1 локально, но не при публикации на Azure веб-сайтах? - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть сервер. Net Core 3.1, опубликованный на Azure веб-сайтах. Как часть этого сервера, он имеет конечную точку API, которую мне нужно вызвать с другим приложением. Контроллер для этой конечной точки делает пару вещей, но принципиально он вызывает другую внешнюю конечную точку API, используя HttpClient.

Я не думаю проблема в любом коде, но для справки, вот как выглядит HTTP-запрос от сервера к внешнему API:

try
{
    string endpoint = baseAdress + cpe;
    string responseBody = await client.GetStringAsync(endpoint);

    // ... It fails at the line above, the rest of this just parses the response body
}
catch (HttpRequestException e)
{
    Console.WriteLine("\nException Caught!");
    Console.WriteLine("Message :{0} ", e.Message);
    // "Response status code does not indicate success: 502 (Bad Gateway)."
}

Когда я запускаю этот сервер локально и настраиваю свое клиентское приложение для вызова конечной точки на стороне сервера на localhost, все работает гладко Контроллер работает, вызывает этот внешний API, получает результаты, а затем выполняет некоторый анализ и возвращает ответ на мое клиентское приложение.

Когда я публикую sh сервер до Azure и получаю на стороне клиента, чтобы указать там свой вызов API, проблем нет. Однако попытка сервера вызвать внешний API приводит к ошибке 502.

Блокирует ли Azure серверы от вызова внешних конечных точек? Или мне не хватает некоторых настроек, которые мне нужно изменить? Раньше я никогда не пользовался Azure веб-сайтами, так что для меня это совершенно новая территория, извиняюсь за глупые предположения / ошибки. Единственные другие люди, которых я видел в посте об этих проблемах, имеют проблемы с тайм-аутами, однако когда я запускаю это локально, это обычно завершается в течение 30 секунд, поэтому я не думаю, что это проблема здесь.

1 Ответ

0 голосов
/ 23 апреля 2020

Поскольку вы вызываете API в другом домене, убедитесь, что в вашем веб-приложении включен CORS .

az resource update --name samsapp--resource-group myResourceGroup --namespace Microsoft.Web --resource-type config --parent sites/<app_name> --set properties.cors.allowedOrigins="['http://api.com']" --api-version 2015-06-01
...