Веб-задание Azure не получает ответа от вызова PostAsync

Я взял службу Windows, изменил ее на консольное приложение, а затем опубликовал как веб-задание. Когда он выполняет команду PostAsync, он не получает ответа И не выполняет Console.WriteLine сразу после команды PostAsync.

Вот код:

            Console.WriteLine("Querying for access credentials...");
            HttpResponseMessage responsePut = null;
            try
            {
                Console.WriteLine("PostAsync call");
                responsePut = await client.PostAsync("/oauth/access_token", new StringContent("grant_type=client_credentials", Encoding.UTF8, "application/x-www-form-urlencoded"));
                Console.WriteLine("Returned from PostAsync call");
            }
            catch (System.Net.Http.HttpRequestException err)
            {
                Console.WriteLine("Unable to connect to the server (HttpRequestException)..." + err.InnerException);
                throw new Exception("Unable to connect to the server (HttpRequestException)..." + err.InnerException);
            }
            catch (Exception err)
            {
                Console.WriteLine("Unable to connect to the server (Exception)..." + err.Message + "::" + err.InnerException);
                throw new Exception("Unable to connect to the server (Exception)..." + err.InnerException);
            }

Журнал консоли Azure выглядит следующим образом:

[05/01/2018 05:45:31 > e559bd: INFO] Querying for access credentials...
[05/01/2018 05:45:31 > e559bd: INFO] PostAsync call
[05/01/2018 05:45:32 > e559bd: SYS INFO] Status changed to Success
[05/01/2018 05:45:32 > e559bd: SYS INFO] Process went down, waiting for 60 seconds

Этот код работает как служба Windows и как консольное приложение Windows, но не работает в Azure.

Что я могу сделать, чтобы определить, что со мной делает Azure, и / или предложения сделать это по-другому.

Попробуйте запустить то же консольное приложение на github.com/projectkudu/kudu/wiki/Kudu-console. Посмотрите, дает ли это больше подсказок.

Suwat Ch 01.05.2018 09:01

Вы можете удаленно отладить его с помощью VS, чтобы получить больше информации.

Tom Sun - MSFT 01.05.2018 11:17

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

David Ebbo 01.05.2018 19:04
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
1
3
176
1

Ответы 1

Я создал заявку в службу поддержки и получил достаточно быстрый ответ.

Строку кода, включающую PostAsync, пришлось изменить следующим образом:

responsePut = client.PostAsync("/oauth/access_token", new StringContent("grant_type=client_credentials", Encoding.UTF8, "application/x-www-form-urlencoded")).Result;

Обратите внимание на удаление await и добавление .Result.

Это было сочтено «синтаксической ошибкой», с чем я не согласен! Но это решило проблему.

Другие вопросы по теме