Azure事件网格/功能/ ngrok

时间:2018-08-03 15:15:46

标签: azure azure-functions azure-eventgrid

我正在尝试按照Local Testing with ngrok

的说明进行操作

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

https://xxxx.ngrok.io/admin/extensions/EventGridExtensionConfig?functionName=EventGridTrigger

我的本​​地ngrok控制台显示:

POST /admin/extensions/EventGridExtensionConfig 404 Not Found

VS中的功能代码:

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

3 个答案:

答案 0 :(得分:3)

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

[FunctionName("EventGridTrigger")]

您可以用邮递员对其进行测试:

http://localhost:7071/admin/extensions/EventGridExtensionConfig?functionName=EventGridTrigger 

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

Aeg-Event-Type:Notification

更新

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

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

及其依赖项:

enter image description here

Update2:

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

及其依赖项:

enter image description here

对于localhost:7071邮递员测试的说明:

有效负载必须是事件数组

答案 1 :(得分:3)

显然,Microsoft发布的documentation中存在错误。 ngrok示例适用于功能v1。如果您使用的是功能v2,则这是触发该功能所需的URL:

https://{subdomain}.ngrok.io/runtime/webhooks/EventGridExtensionConfig?functionName={functionName}

查看已记录问题here

答案 2 :(得分:0)

对于功能2.x,URL为https:// {subdomain} .ngrok.io / runtime / webhooks / eventgrid?functionName = {functionName}。

请参见docs