Я изучаю, как использовать функции Azure для обработки и ответа на SMS-сообщения, отправленные по номеру телефона Twilio. Для этого используется предварительная версия v2 Microsoft.Azure.WebJobs.Extensions.Twilio (3.0.0-beta5).
Я использую ngrok для пересылки http-триггера из Twilio через локальный сервер, который запускается при запуске функции Azure в режиме отладки из Visual Studio (2017).
Код, который я использую, очень прост, просто возвращает текстовое сообщение в ответ на все, что он получает:
public static class Function1
{
[ FunctionName( "BikeSMS" ) ]
public static IActionResult Run(
[ HttpTrigger( AuthorizationLevel.Function, "get", "post", Route = null ) ]
HttpRequest req,
TraceWriter log
)
{
log.Info( "C# HTTP trigger function processed a request." );
var twiResp = new MessagingResponse();
twiResp.Append( new Message( "This is Muddlehead. Thanx for your message" ) );
return new ContentResult()
{
Content = twiResp.ToString(),
ContentType = "application/xml"
};
}
}
Это отлично работает. Моя проблема в том, что я не могу заставить отладчик сломать что-либо внутри функции; точка останова просто игнорируется, и указанный текст возвращается.
Как настроить так, чтобы при вызове функции Azure включался отладчик? Есть ли какие-то настройки, которые мне нужно передать на локальный сервер, который запускается VS 2017, чтобы разместить / запустить функцию Azure?
Обновление
Мне удалось заставить отладчик VS остановиться на точках останова, но только после того, как вручную подключил VS к консольному приложению, на котором выполнялся локальный сервер функций Azure, запускаемый при нажатии клавиши F5.
Так что что-то не так в конфигурации или инструментах, потому что к чему бы ни подключался отладчик VS, когда вы нажимаете F5, это не то приложение.
Я не представляю это как ответ, потому что это не так. Мне не нужно заново подключать отладчик вручную.
Вот шаги, которые я использовал, чтобы заставить отладчик начать работать так, как он должен:
1) Запустите приложение-функцию Azure через F5 в режиме отладки. Откроется окно консоли для узла функции Azure.
2) Отладка -> Остановить отладку. Окно консоли, открытое в # 1, закроется, и появится новое окно консоли, на котором запущен узел функции Azure.
3) Присоедините отладчик VS к консольному приложению, открывшемуся в # 2 (в моем случае это называется «func.exe»).
Отладка теперь работает так, как вы ожидаете.
Дополнительная информация: я использую ConEMU как консольную оболочку по умолчанию в VS. Я не знаю, означает ли это что-нибудь, но консоль, которая открывается в # 1, является оболочкой ConEMU, но консоль, которая открывается в # 2, является простой старой оболочкой cmd.exe.