EWS всегда возвращает ErrorTimeZone, когда вы звоните с часовым поясом UTC

Примечание: прежде всего, извините за мой плохой уровень английского языка.

У меня проблемы со всеми запросами к EWS (с использованием управляемого API) в среде клиента, когда я использую для создания ExchangeService часовой пояс Utc (новый ExchangeService (ExchangeVersion.Exchange2007_SP1, TimeZoneInfo.Utc);)

Возвращенная ошибка: ResposeCode = ErrorTimeZone (часовой пояс с указанным идентификатором не найден.)

Любая идея?

Здесь у вас есть журнал трассировки EWS-запроса, который возвращает эту ошибку:

18  2014-05-19 13:52:33,224 6   TRACE   XXXX    SCService.exe   (null)  (null)[EwsResponseHttpHeaders] <Trace Tag="EwsResponseHttpHeaders" Tid="6" Time="2014-05-19 13:52:33Z">
HTTP/1.1 500 Internal Server Error
Content-Length: 1014
Cache-Control: private
Content-Type: text/xml; charset=utf-8
Date: Mon, 19 May 2014 13:52:35 GMT
Server: Microsoft-IIS/6.0
X-AspNet-Version: 2.0.50727
X-Powered-By: ASP.NET


</Trace>
    (null)
19  2014-05-19 13:52:33,224 6   TRACE   XXXX    SCService.exe   (null)  (null)[EwsResponse] <Trace Tag="EwsResponse" Tid="6" Time="2014-05-19 13:52:33Z" Version="15.00.0516.014">
  <?xml version="1.0" encoding="utf-8"?>
  <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <soap:Header>
      <t:ServerVersionInfo MajorVersion="8" MinorVersion="3" MajorBuildNumber="298" MinorBuildNumber="1" Version="Exchange2007_SP1" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types" />
    </soap:Header>
    <soap:Body>
      <soap:Fault>
        <faultcode>soap:Client</faultcode>
        <faultstring>A time zone with the specified ID could not be found.</faultstring>
        <detail>
          <e:ResponseCode xmlns:e="http://schemas.microsoft.com/exchange/services/2006/errors">ErrorTimeZone</e:ResponseCode>
          <e:Message xmlns:e="http://schemas.microsoft.com/exchange/services/2006/errors">A time zone with the specified ID could not be found.</e:Message>
          <t:MessageXml xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">
            <t:Value Name="Id">UTC</t:Value>
          </t:MessageXml>
        </detail>
      </soap:Fault>
    </soap:Body>
  </soap:Envelope>
</Trace>

Спасибо за прочтение:)

2 ответа

Решение

Проблема заключалась в том, что по какой-то причине ни один из Exchange CAS в производственной среде клиента не имел часового пояса UTC, определенного в реестре Windows.

Я смог получить доступ к owa клиента и увидел, что не могу установить часовой пояс UTC в настройках owa. Это убедило их проверить, правильно ли установлен часовой пояс UTC в одном из их CAS. И как это не было, я попросил установить вручную часовой пояс de utc в реестре Windows. Затем я настроил свое приложение для атаки только на этот CAS, и все работало хорошо.

Исследование клиента показало мне, что все было вызвано патчем обмена, который они недавно применили, и они уже определили и протестировали в среде предварительной подготовки еще один патч, который исправил его.

Просто следите за этим на случай, если кто-то еще наткнется на это. У меня была очень похожая проблема после установки Exchange 2016 CU8 (начиная с CU5). Я обнаружил, что учетная запись с правами на олицетворение получила ошибку 500 при выполнении вызова GetServerTimeZone. Это произошло из-за того, что для учетной записи не был включен почтовый ящик и, следовательно, ему не назначен часовой пояс. Как только я включил почту, учетная запись исчезла, и сервис был восстановлен.

Microsoft признала, что это не ожидаемое поведение, и представила его для проверки.

Другие вопросы по тегам