【发布时间】:2020-05-18 14:46:13
【问题描述】:
我正在使用 EWS 连接到 Exchange on 365,并使用 ExchangeService 对象上的 GetUserAvailability 方法来检索多个用户(不超过 30 个)的日历项目集合。
我用来连接到 EWS 的用户拥有模拟权限,除了一件事外,一切正常。
当我遍历 AttendeesAvailability 集合,然后遍历其 CalendarEvents 集合中的每个 CalendarEvent 时,我能够看到 Details 对象并访问主题、位置、IsPrivate 等内容...
我遇到的问题是 Details.StoreId 始终为空。
我有两个 365 Exchange 环境,我们的和客户的。当我尝试访问我们的 StoreId 时,它工作得非常好,并且具有预期的唯一 ID。当我在客户端实例上运行相同的命令时,它为空;但是为 Details 对象填充了所有其他属性。
这让我相信这是 Exchange 中服务用户的权限问题。所以,我慢慢地提高了权限级别,希望能达到最佳状态,但一无所获。用户现在是 Exchange 管理员(我认为应该可以全面访问 Exchange 环境中的所有内容 - 包括每个人邮箱的日历项目)。还是不开心。
那么,这是 Exchange 设置的配置问题吗?
值得注意的是,我的应用程序具有的所有其他功能都运行良好。我缺少的只是这个 ID。
我对此一无所知。如果不是因为被锁我剃了光头,我现在就会把头发拔掉。
任何帮助或建议将不胜感激。
干杯
更新 1
所以,我发现如果我对我正在验证的服务帐户执行相同的过程,我会得到 StoreId。此帐户是在从本地迁移到 O365 后创建的(这可能没有任何意义)。我正在访问自迁移以来创建的另一个帐户,以查看它是否也适用于该帐户。这将帮助我确定问题是否可能仅与迁移的邮箱有关,或者与用于身份验证的帐户以外的任何邮箱有关。我会尽快更新...
更新 2
我已针对新帐户进行了测试。我将新帐户日历上的默认权限设置为 Reviewer(甚至尝试 Owner 和 Anonymous 只是为了进行健全性检查)。当我使用服务帐户进行身份验证时,我没有得到 StoreId。当我使用新的测试帐户进行身份验证时,我确实获得了 StoreId。
这让我相信这是一个权限问题。现在是找出神奇权限是什么的一个案例。我仍然不明白为什么只有我没有找回的 ID。
仍然欢迎任何建议。
更新 3
看起来 EWS 上的构建版本之间可能有所不同。
有效的版本报告服务器版本为 15.20.3021.030。 不起作用的版本是15.20.3045.019版本。
【问题讨论】:
-
我发现任何没有授予服务帐户审阅者权限的用户都存在此问题。授予权限并显示 StoreID。我在原来的 Exchange 2106 上,没有迁移,但我不认为这是问题的根源。
-
您能找到解决此问题的方法吗?我已经开始在现有的安装中看到这一点,该安装在几天/几周前可以正常工作。是否有不推荐使用此功能的 office365 更改/更新?在更新 2 中,您说创建一个新帐户解决了这个问题?你能详细说明它是什么类型的帐户吗?谢谢
-
嗨@adhiman,添加新帐户并没有解决问题。它所做的想法是强调问题在于从日历中为用于身份验证的用户以外的用户获取数据。我的服务帐户可以看到自己的日历项的 ID,但不能看到测试帐户的 ID,测试帐户可以看到自己的日历项的 ID,但看不到服务帐户的 ID。 ID 是唯一丢失的数据。其他一切都按预期出现。
-
嗨@CarlHowarth,确实是这样。只要我使用自己的帐户,我就可以检索事件详细信息(也是 StoreId),但使用服务帐户会为 StoreId 提供 null。关于 EWS 构建版本更新的有趣发现。看到此更新的发行说明会很有趣。
标签: c# asp.net exchangewebservices