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 признала, что это не ожидаемое поведение, и представила его для проверки.