Мы разработали веб-часть SharePoint, которая отображает элементы календаря выбранных пользователей, запросив Exchange OnPrem 2013 или Exchange Online для пользователей, которые имеют свой почтовый ящик в Office 365. Мы используем следующий код:
// Impersonate the Search
ExchangeImpersonationType exchangeImpersonationType = new ExchangeImpersonationType();
ConnectingSIDType connectingSIDType = new ConnectingSIDType();
connectingSIDType.PrimarySmtpAddress = emailAddress;
exchangeImpersonationType.ConnectingSID = connectingSIDType;
exchangeServiceBinding.ExchangeImpersonation = exchangeImpersonationType;
// Create the Request
FindItemType findItemType = new FindItemType();
// Specified Transversal
findItemType.Traversal = ItemQueryTraversalType.Shallow;
// Specified ItemShape
ItemResponseShapeType itemResponseShapeType = new ItemResponseShapeType();
itemResponseShapeType.BaseShape = DefaultShapeNamesType.AllProperties;
findItemType.ItemShape = itemResponseShapeType;
// Specified ParentFolderIds
DistinguishedFolderIdType[] distinguishedFolderIdTypes = new DistinguishedFolderIdType[1];
distinguishedFolderIdTypes[0] = new DistinguishedFolderIdType();
distinguishedFolderIdTypes[0].Id = DistinguishedFolderIdNameType.calendar;
findItemType.ParentFolderIds = distinguishedFolderIdTypes;
// Specified Item
CalendarViewType calendarViewType = new CalendarViewType();
calendarViewType.StartDate = startDate;
calendarViewType.EndDate = endDate;
findItemType.Item = calendarViewType;
// Execute the Request
FindItemResponseType res = exchangeServiceBinding.FindItem(findItemType);
Проблема в том, что когда у пользователя нет почтового ящика в Exchange OnPrem, метод exchangeServiceBinding.FindItem
через 3–5 секунд отвечает с кодом ошибки «UserHasNoMailbox».
Представьте, что сейчас загружается страница с более чем 40 пользователями, среди которых 10 пользователей, у которых есть почтовый ящик в Exchange Online, в этом случае мы теряем не менее 30 секунд.
Можно ли узнать, есть ли у пользователя почтовый ящик в Exchange OnPrem, не отправив запрос FindItem
?
Спасибо.