Azure 事件网格 / 函数 / ngrok

Gav*_*ill 1 azure azure-functions azure-eventgrid

我正在尝试按照使用 ngrok 进行本地测试的说明进行操作

我使用 C# 示例在本地运行我的事件网格和我的函数在 VS 中运行。但是,当我尝试使用端点订阅我的事件时

https://xxxx.ngrok.io/admin/extensions/EventGridExtensionConfig?functionName=EventGridTrigger
Run Code Online (Sandbox Code Playgroud)

我的本地 ngrok 控制台显示:

POST /admin/extensions/EventGridExtensionConfig 404 Not Found
Run Code Online (Sandbox Code Playgroud)

VS中的函数代码:

  [FunctionName("EventGridTrigger")]
    public static void Run([EventGridTrigger]EventGridEvent eventGridEvent, TraceWriter log)
    {
        log.Info(eventGridEvent.Data.ToString());
    }
Run Code Online (Sandbox Code Playgroud)

Rom*_*iss 5

根据您的描述,必须使用以下属性:

[FunctionName("EventGridTrigger")]
Run Code Online (Sandbox Code Playgroud)

您可以使用 Postman 进行测试:

http://localhost:7071/admin/extensions/EventGridExtensionConfig?functionName=EventGridTrigger 
Run Code Online (Sandbox Code Playgroud)

请注意,必须添加以下标题:

Aeg-Event-Type:Notification
Run Code Online (Sandbox Code Playgroud)

更新:

以下是我通过 VS 2017 版本 15.7.5 创建的 ngrok 和自定义主题的工作功能:

// This is the default URL for triggering event grid function in the local environment.
// http://localhost:7071/admin/extensions/EventGridExtensionConfig?functionName={functionname} 
// Aeg-Event-Type:Notification

using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.Azure.WebJobs.Extensions.EventGrid;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;

namespace FunctionApp10
{
    public static class Function2
    {
        [FunctionName("Function2")]
        public static void Run([EventGridTrigger]JObject eventGridEvent, TraceWriter log)
        {
            log.Info(eventGridEvent.ToString(Formatting.Indented));
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

和依赖项:

在此处输入图片说明

更新2:

VS 从 EventGridTrigger 模板生成的第 2 版函数如下:

// Default URL for triggering event grid function in the local environment.
// http://localhost:7071/runtime/webhooks/EventGridExtensionConfig?functionName={functionname}
// Aeg-Event-Type:Notification

using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.Azure.EventGrid.Models;
using Microsoft.Azure.WebJobs.Extensions.EventGrid;
using Microsoft.Extensions.Logging;

namespace FunctionApp11
{
    public static class Function2
    {
        [FunctionName("Function2")]
        public static void Run([EventGridTrigger]EventGridEvent eventGridEvent, ILogger log)
        {
            log.LogInformation(eventGridEvent.Data.ToString());
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

和依赖项:

在此处输入图片说明

本地主机:7071 邮递员测试的注意事项:

负载必须是事件数组


Gav*_*ill 5

显然,Microsoft 发布的文档中存在错误。ngrok 示例适用于函数 v1。如果您使用的是函数 v2,那么这是触发该函数所需的 URL:

https://{subdomain}.ngrok.io/runtime/webhooks/EventGridExtensionConfig?functionName={functionName}
Run Code Online (Sandbox Code Playgroud)

请参阅此处记录的问题