图的 Azure 函数订阅

Azure Function subscription to a Graph

我已经定义了一个要订阅到 Graph 的通知函数:

public static class NotificationFunction
    {
        [FunctionName("NotificationFunction")]
        public static async Task<HttpResponseMessage> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");

            string validationToken = req.Query["validationToken"];

            log.LogInformation($"validationToken {validationToken}");    

            return new HttpResponseMessage(System.Net.HttpStatusCode.OK)
            {
                Content = new StringContent(validationToken, System.Text.Encoding.UTF8, "text/plain")
            };
        }
    }

我尝试在计时器函数中添加此 notificationUrl:

var subscription = new Subscription
            {
                ChangeType = "created,updated",
                NotificationUrl = NotificationUrlValue,
                Resource = "me/mailFolders('Inbox')/messages",
                ExpirationDateTime = DateTimeOffset.Parse("2019-12-30T18:23:45.9356913Z"),
                ClientState = "secretClientValue"
            };

NotificationUrlValue 是 NotificationFunction URL 并且工作正常如果我测试它,但是当定时器触发器运行时得到:

Code: InvalidRequest
Message: Subscription validation request failed. Must respond with 200 OK to this request.

在触发功能监视器中我没有看到任何调用,可能是防火墙问题?从哪个 IP 调用 NotificationUrl?

问题是 NotificationUrl 在防火墙后面,解决方案是将 NotificationUrl 更改为可访问的。