如何在本地调试 ServiceBus 触发的 Azure 函数?

Alf*_*dal 8 azure azureservicebus azure-servicebus-topics azure-functions

我的函数将从现有的 ServiceBus 主题触发。我已经使用 VS2017 (15.3) 预览版中的新工具创建了该函数,作为编译函数。

如何在本地测试此功能?

Tom*_*chy 15

对于非 http 触发的函数,您可以向本地管理员端点发送 POST 请求。更多信息在这里

像这样(我正在使用邮递员) 在此处输入图片说明

  • 谢谢!我需要做一些额外的操作才能使其工作:1)更改触发器签名接受“string msg”而不是“Message msg”;2) 对我的测试 SB 消息进行 JSON 转义,例如 `{ "input": "{ \"testobj\": { \"testprop\": \"testval\"} }"` (2认同)

Amo*_*mor 2

如果你想检查你的函数是否会被Azure服务总线消息触发,你需要拥有一个Azure订阅并创建一个服务总线命名空间,因为微软没有提供像Azure存储模拟器这样的Azure服务总线模拟器。

如果您想调试您的函数,您可以创建一个新的控制台应用程序并调用您定义的函数。以下步骤供您参考。

步骤 1,创建控制台应用程序。

步骤2,将Project引用添加到函数项目中。

步骤 3,将 Microsoft.Azure.WebJobs -Version 2.1.0-beta1 包从 NuGet 安装到控制台应用程序。

Install-Package Microsoft.Azure.WebJobs -Version 2.1.0-beta1 
Run Code Online (Sandbox Code Playgroud)

步骤 4,使用以下代码调用您的函数。

class Program
{
    static void Main(string[] args)
    {
        Function1.Run("msg1", new MyTraceWriter(TraceLevel.Info));
    }
}

public class MyTraceWriter : TraceWriter
{
    public MyTraceWriter(TraceLevel level) : base(level)
    {

    }

    public override void Trace(TraceEvent traceEvent)
    {
        Console.WriteLine(traceEvent.Message);
    }
}
Run Code Online (Sandbox Code Playgroud)