图的 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 更改为可访问的。
我已经定义了一个要订阅到 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 更改为可访问的。