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

How to debug ServiceBus-triggered Azure Function locally?

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

如何在本地测试此功能?

如果您想检查您的功能是否会被Azure Service Bus 消息触发,您需要拥有一个Azure Subscription 并创建一个Service Bus 命名空间,因为Microsoft 没有像Azure Storage 模拟器那样提供Azure Service Bus 模拟器。

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

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

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

第 3 步,从 NuGet 安装 Microsoft.Azure.WebJobs - 版本 2.1.0-beta1 包到您的控制台应用程序。

Install-Package Microsoft.Azure.WebJobs -Version 2.1.0-beta1 

第 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);
    }
}

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

像这样(我用的是 Postman)

您 运行 项目处于调试模式并为消息创建 JSON 负载,然后您可以 post 此格式的完整 json 对象。

{
    "input": "<trigger_input>"
}

例如

http://localhost:7071/admin/functions/OrderFunction

然后您可以读取函数主体中的消息并获取您 post 编辑的 Json。

Encoding.UTF8.GetString(message.Body)