Я использую OAuth2.0 для подключения к веб-сервисам Exchange. Все остальное, кажется, работает нормально для меня. Однако, когда я пытаюсь подписаться на один из ресурсов комнаты, используя информацию о группировке и предоставляя якорный почтовый ящик в качестве одного из основных почтовых ящиков, он выдает ошибку.
"Запрос не выполнен, так как EWS не удалось связаться с соответствующим сервером CAS для этого запроса."
Так, например, я пытаюсь подписаться на nitroom1, и одним из основных почтовых ящиков, связанных с группой, является nitroom2, который я использую в качестве X-AnchorMailbox, тогда я получил вышеуказанную ошибку.
public static ExchangeService GetExchangeService(string exchangeURL, string userName, string password, string resourceEmail, string primaryMailbox, string clientID, string tenantID, string clientSecret, string certName)
{
ExchangeService service;
service = new ExchangeService(setTZtoUTC);
service.Url = new Uri(exchangeURL);
if (!string.IsNullOrWhiteSpace(clientID) && !string.IsNullOrWhiteSpace(tenantID))
{
string oAuthToken = multiExchangeManager.getOAuthTokenFromCache(clientID, tenantID, clientSecret, certName);
service.Credentials = new OAuthCredentials(oAuthToken);
}
else
{
service.Credentials = new WebCredentials(userName, password);
}
service.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, resourceEmail);
service.HttpHeaders.Add("X-AnchorMailbox", primaryMailbox);
service.HttpHeaders.Add("X-PreferServerAffinity", "true");
return service;
}
Однако, если я подключаю ews, используя личную учетную запись, тогда делаю то же самое, это работает нормально.
Кроме того, если я использую resourceMailbox так же, как основной почтовый ящик, тогда он также будет работать нормально. В моем примере это будет выглядеть так.
service.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, "nitroom1");
service.HttpHeaders.Add("X-AnchorMailbox", "nitroom1");
Вот как я пытаюсь использовать подписку.
exchangeService.SubscribeToStreamingNotifications(
new FolderId[] { WellKnownFolderName.Calendar, WellKnownFolderName.DeletedItems },
EventType.Created, EventType.Deleted, EventType.Modified, EventType.Moved, EventType.Copied);
Кто-нибудь знает, почему это происходит или что я здесь делаю неправильно?
еще одна вещь, которую нужно добавить, я попробовал инструмент EWSEditor, который предоставляет информацию о подписке, и оба вышеупомянутых ресурса используют одну и ту же информацию о группировке.