如何在本地调试 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)
我的函数将从现有的 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)