m проблема с Office 365 EWS (только Office 365, Exchange 2010 и 2013 работают нормально). Я могу создать нагрузочный подписку без ошибок, но когда я иду, чтобы использовать его по телефонуОшибка EWS ОшибкаNoRespondingCASInDestinationSite
getEvents()
Я получаю сообщение об ошибке:
ErrorNoRespondingCASInDestinationSite
The following error occured while retrieving events for exchange resource: - Exchange Web Services are not currently available for this request because none of the Client Access Servers in the destination site could process the request.
Вот некоторые фрагменты кода
Использование автообнаружения и настройке удостоверяющие листы
this.exchangeService.Credentials = new NetworkCredential(this.Username, this.Password);
try {
this.exchangeService.AutodiscoverUrl(this.Username, RedirectionCallback);
}
catch(Exception ex)
{
Logger.WriteToEventLog(EventLogEntryType.Warning, 104, "ExchangeDataAccess, AutodiscoverURL error: " + ex.Message);
}
if (exchangeService.Url == null)
{
this.ExchangeServerURL = GetOffice365EWSUrl(this.Username);
this.exchangeService.Url = new Uri(this.ExchangeServerURL);
this.exchangeService.CookieContainer = new CookieContainer();
}
После того, как мы авторизуемся и находим, что наш пользователь обмена, выполнять все операции по
ServicePointManager.ServerCertificateValidationCallback = (sender1, certificate, chain, errors) => true;
string username = this.Username;
if (this.authenticateContext.GetExchangeServerVersion().Contains("365"))
{
username = this.Username.Remove(this.Username.IndexOf("@"));
}
NameResolutionCollection resolveNameResult = this.exchangeService.ResolveName(username, ResolveNameSearchLocation.ContactsThenDirectory, true);
if (resolveNameResult.Count() > 0)
{
roomEmailAddress = resolveNameResult[0].Mailbox.Address;
if (!string.IsNullOrEmpty(roomEmailAddress))
{
this.ExchangeUserEmailAddress = roomEmailAddress;
logMsg.AppendLine("Logged into Exchange with " + roomEmailAddress + " successfully, RetrieveRoomsList is next");
}
}
Затем мы получаем SubscribeResponse и сохранить его в список
subscribeResponse = this.exchangeDataAccess.ExchangeSubscribe(syncPoint.ThirdPartyId, syncPoint.Watermark, true);
Проезжает выше объект в метод обертки, чтобы получить все события из EWS
Dictionary<PullSubscription, IEnumerable<ItemEvent>> mailboxEvents = null;
GetEventsResults eventsResults = subscription.GetEvents();
if (eventsResults == null || eventsResults.ItemEvents.Count() == 0) {
return mailboxEvents;
}
mailboxEvents = new Dictionary<PullSubscription, IEnumerable<ItemEvent>>();
mailboxEvents.Add(subscription, eventsResults.ItemEvents);
return mailboxEvents;
Линия, которая вызывает subscription.GetEvents()
, где указано исключение, указанное в верхней части.
Существует еще один уровень сложности добавлен потому, что наш обмен пользователь имеет доменное имя @ FOOlab.onmicrosoft.com, где, как все номера управляются есть доменное имя @ LAB.FOO.COM
По клиент - это аутентификация ADFS, однако я действительно мало что знаю об этом.
Я могу сказать, однако, что эта база кода работала (получила события), а затем что-то изменилось, и ошибка начала появляться. Первоначально я думал, что клиент что-то изменил, но мы протестировали это против другого Office 365 (без ADFS) и увидели ту же ошибку, поэтому теперь я не знаю, что думать.