编辑1:' ...无法在商店中找到'消息实际上是房间的权限问题。必须授予用户审阅者权限。
编辑2:CalendarEvents集合为空,因为它似乎只包含繁忙信息。如果我在我要求建议的时候在一个房间里开会,那就会被退回。
我尝试使用Exchange 2010 Web服务(EWS)的Room Finder功能。
我有两个问题:
在询问免费的忙碌信息时,向代码添加房间不会产生任何结果。 CalendarEvents集合为空。
foreach (AttendeeAvailability availability in results.AttendeesAvailability)
{
Console.WriteLine("Availability information for {0}:\n", attendees[i].SmtpAddress);
foreach (CalendarEvent calEvent in availability.CalendarEvents)
{
Console.WriteLine("\tBusy from {0} to {1} \n", calEvent.StartTime.ToString(), calEvent.EndTime.ToString());
}
i++;
}
此外,要求特定房间的预约:
CalendarView calendarView = new CalendarView(DateTime.Now, DateTime.Now.AddHours(8));
FolderId folderID = new FolderId(WellKnownFolderName.Calendar, roomAddress.Address);
FindItemsResults roomAppts = service.FindAppointments(folderID, calendarView);
给我一个错误: '在商店'
中找不到指定的文件夹我不知道这是否属于下方的许可问题......
我正在针对Office 365帐户测试此代码。如果我使用Outlook(Mac版)我无法看到房间,这似乎指出了许可问题。但是使用Outlook Web,我可以看到房间并保存日历事件。
很奇怪。 任何帮助表示赞赏。
答案 0 :(得分:0)
给我一个错误:'在商店中找不到指定的文件夹'
此错误表示您至少没有相关文件夹的审阅者权限。
GetUserAvailblity与使用FindAppointments不同,因为它使用邮箱发布的FreeBusy信息。因此,它将使用FreeBusy权限https://support.microsoft.com/en-au/help/2865291/how-to-set-free-busy-permissions-in-exchange-management-shell-in-offic,其中最严格的(FreeBusyOnly)将仅返回可用性数据(例如,空闲或忙碌)。要返回CalendarEvents,至少需要LimitedDetails。
开始的地方是确保您在相关日历上至少拥有LimitedDetails。另一件事是启用跟踪https://msdn.microsoft.com/en-us/library/office/dd633676(v=exchg.80).aspx并查看正在返回的原始数据(例如,如果它实际上只返回可用性信息,则会显示)。