twilio - Azure 函数中未命中断点
问题描述
我正在学习如何使用 Azure Functions 处理和响应通过 Twilio 电话号码提交的 SMS 消息。这是使用 Microsoft.Azure.WebJobs.Extensions.Twilio (3.0.0-beta5) 的预览版 v2。
我使用 ngrok 将一个 http 触发器从 Twilio 转发到本地服务器,当我在 Visual Studio (2017) 中以调试模式启动 Azure 函数时,该服务器会启动。
我使用的代码非常简单,只是返回一条短信来响应它收到的任何内容:
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 时启动。
所以配置或工具有问题,因为当你按下 F5 时,无论 VS 调试器附加到什么,它都不是正确的应用程序。
我没有将此作为答案提交,因为它不是。我不必手动重新附加调试器。
以下是我用来让调试器以应有的方式开始工作的步骤:
1) 在调试模式下通过 F5 启动 Azure Function 应用程序。为 Azure Function 主机打开控制台窗口。
2) 调试 -> 停止调试。#1 中打开的控制台窗口关闭,并出现一个运行 Azure Function 主机的新控制台窗口。
3) 将 VS 调试器附加到在 #2 中打开的控制台应用程序(在我的情况下称为“func.exe”)。
调试现在可以按您的预期工作。
附加信息:我在 VS 中使用 ConEMU 作为我的默认控制台外壳。我不知道这是否意味着什么,但在 #1 中打开的控制台是一个 ConEMU shell,但在 #2 中打开的控制台是一个普通的旧 cmd.exe shell。
解决方案
我没有 ConEMU,但我遇到了同样的问题 - 函数断点刚刚停止工作。此外,当我停止进程时,函数运行时控制台并没有关闭,它已经关闭了。在 Visual Studio 中运行。
该解决方案相当不直观:转到“工具->选项->调试”并取消选中“调试停止时自动关闭控制台”。之后,即使窗口仍然没有自动关闭,断点也会再次开始工作。
推荐阅读
- java - 将 CSV 文件与 Neo4j 结果进行比较
- xml - 使用 Spring Batch 进行 Zip 压缩
- regex - 如何从一行中排除指定字符?
- angular - 角。从 switchMap 内的订阅中获取价值
- protractor - 如何用量角器运行硒网格
- sql - Oracle 以 15 秒为间隔汇总数据
- sql - 迁移中的 KnexJS 原始查询
- ios - swift无法单击位于多个子视图内的uibutton
- angular - 类型 'undefined[]' 不能转换为类型 'OrderArray'。类型“未定义 []”中缺少属性“菜单名称”
- python - 如何选择范围内的数据