gpt4 book ai didi

java - 使用 subscribeToStreamingNotifications 中的 Item.bind() 拒绝访问

转载 作者:行者123 更新时间:2023-12-01 23:21:07 26 4
gpt4 key购买 nike

我们通过以下方法订阅 MS Exchange 2016 的流式通知:

 service.subscribeToStreamingNotificationsOnAllFolders(EventType.Copied,EventType.Created, EventType.Deleted, EventType.Modified, EventType.Moved, EventType.NewMail);

switch (itemEvent.getEventType()) {
case Deleted:
delete(mailbox, itemEvent.getItemId());
break;
case Moved:
try {
delete(mailbox, itemIdNoChangeKey(itemEvent.getOldItemId()));
} finally {
create(mailbox, Item.bind(service, itemIdNoChangeKey(itemEvent.getItemId())));
}
break;
case Modified:
update(mailbox, Item.bind(service, itemIdNoChangeKey(itemEvent.getItemId()), itemProp()));
break;
case Copied:
case Created:
create(mailbox, Item.bind(service, itemIdNoChangeKey(itemEvent.getItemId()), itemProp()));
break;
}

有时上面的调用会成功,但更常见的是,Items.bind() 会失败,并出现以下情况:

“访问被拒绝。检查凭据并重试。,该过程无法获取正确的属性。,errorCode='ErrorAccessDenied'”

或者

“在商店中找不到指定的对象。,进程无法获取正确的属性。,errorCode='ErrorItemNotFound'”

尽管如此

  • 凭据有效,可以成功用于调用 service.findFolders(WellKnownFolderName.MsgFolderRoot,folderView);
  • 我们正在使用 Exchange 模拟。已为所有邮箱分配模拟权限。
  • 设置锚定邮箱:service.getHttpHeaders().put("X-AnchorMailbox",mailbox);
  • X-PreferServerAffinity 已设置:service.getHttpHeaders().put("X-PreferServerAffinity", "true");

任何人都可以告诉我们为什么我们会收到 ErrorAccessDenied 和 ErrorItemNotFound 错误吗?是否与 Exchange 系统相关邮件或文件夹的处理有关?我们如何处理这些项目,或者如果不能,如何跳过它们而不会对 Exchange 服务器造成不必要的负载?

最佳答案

就我而言,我的代码模拟了错误的邮箱。事实证明,我需要按如下方式维护 map :

 private Map<StreamingSubscription, String> reverseSubscriptions = Collections.synchronizedMap(new HashMap<>());

然后在 notificationEventDelegate(..) 方法中...

调用

String mailbox = reverseSubscriptions.get(args.getSubscription());

处理项目事件时...

 private void processItemEvent(ExchangeService service, String mailbox, ItemEvent itemEvent) throws Exception {
synchronized(service) {
service.setImpersonatedUserId(impersonateAccount(mailbox));
service.getHttpHeaders().put("X-AnchorMailbox", mailbox);
service.getHttpHeaders().put("X-PreferServerAffinity", "true");
try {
...
} catch (Exception ie) {
...
}
}
}

}

关于java - 使用 subscribeToStreamingNotifications 中的 Item.bind() 拒绝访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58327533/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com