我遵循链接https://github.com/microsoftgraph/msgraph-training-changenotifications中的示例,并使用计时器类创建和更新通知订阅。
[HttpGet]
public ActionResult<string> Get()
{
var graphServiceClient = GetGraphClient();
var sub = new Microsoft.Graph.Subscription();
sub.ChangeType = "updated";
sub.NotificationUrl = config.Ngrok + "/api/notifications";
sub.Resource = "/users";
sub.ExpirationDateTime = DateTime.UtcNow.AddMinutes(5);
sub.ClientState = "SecretClientState";
var newSubscription = graphServiceClient
.Subscriptions
.Request()
.AddAsync(sub).Result;
Subscriptions[newSubscription.Id] = newSubscription;
if(subscriptionTimer == null)
{
subscriptionTimer = new Timer(CheckSubscriptions, null, 5000, 15000);
}
return $"Subscribed. Id: {newSubscription.Id}, Expiration: {newSubscription.ExpirationDateTime}";
}
但是我注意到计时器并不总是被触发的(例如:与网络相关的问题/在重新部署代码之后)。
是否有更好的方法来替换此计时器?
我听说过天蓝色的webjobs,是否可以用天蓝色的webjobs替换此计时器?如果可以的话,有人可以给我指出有关如何使用的文档吗?
答案 0 :(得分:0)
我注意到您使用的是ASPNET
,如果您使用的是ASPNETCORE
版本,则从2.x开始,您可以获得每隔X个小时即可运行一次的后台服务以重新订阅(更新)订阅。这就是我们正在使用的(并且我们在Azure上)。我猜想webjobs可以解决问题,但我还没有使用过。您还可以使用一个外部服务,每隔X小时调用您的一个端点(例如CRON作业)。
希望这会有所帮助! JS