Azure功能未命中断点

时间:2018-07-02 02:41:05

标签: twilio azure-functions conemu

我正在学习如何使用Azure Functions处理和响应通过Twilio电话号码提交的SMS消息。这是使用Microsoft.Azure.WebJobs.Extensions.Twilio(3.0.0-beta5)的预览版v2。

我使用ngrok将来自Twilio的http触发器转发到本地服务器,当我从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 Function服务器的控制台应用程序之后,该应用程序会在您按F5键时启动。

所以在配置或工具方面出了点问题,因为在您按F5键时VS调试器所附加的东西都不是正确的应用程序。

我没有提交此答案,因为不是。我不必手动重新连接调试器。

以下是我用来使调试器按照应有的方式开始工作的步骤:

1)在调试模式下通过F5启动Azure Function应用。将为Azure Function主机打开控制台窗口。

2)调试->停止调试。在#1中打开的控制台窗口关闭,并出现一个运行Azure Function主机的新控制台窗口。

3)将VS调试器附加到在#2中打开的控制台应用程序(在我的情况下称为“ func.exe”)。

调试现在可以按预期进行。

其他信息:我将ConEMU用作VS中的默认控制台外壳。我不知道这是什么意思,但是在#1中打开的控制台是ConEMU shell,但是在#2中打开的控制台是普通的cmd.exe shell。

2 个答案:

答案 0 :(得分:16)

我没有ConEMU,但是我遇到了同样的问题-函数断点刚刚停止工作。此外,当我停止进程时,功能运行时控制台没有关闭,它早已关闭。在Visual Studio中运行。

该解决方案非常不直观:转到“工具->选项->调试”,然后取消选中“调试停止时自动关闭控制台”。此后,即使窗口仍未自动关闭,断点也重新开始工作。

答案 1 :(得分:1)

在这种情况下,ConEMU接管Window的默认控制台窗口的打开显然存在问题(您可以在https://conemu.github.io/en/DefaultTerminal.html上了解ConEMU的此功能)。

禁用此ConEMU功能(使VS打开普通的Windows控制台)解决了该问题;可以正常击断点,而不必附加到手动运行Azure Functions本地主机的控制台。当然,这意味着我失去了在VS中打开ConEMU外壳的价值,但我可以接受。我将向ConEMU团队报告问题。

相关问题