Есть ли разница между экземплярами TimeZoneInfo для .NET 3.5 в Windows по сравнению с Mono в OS X? - PullRequest
3 голосов
/ 10 марта 2011

Я пытаюсь вызвать EWS (Exchange версии 2007 с пакетом обновления 1) с использованием Mono на OS X. Я могу подключиться к службе и выполнить аутентификацию, но любые вызовы, которые я пытаюсь сделать, приводят к исключению следующим образом:

Microsoft.Exchange.WebServices.Data.ServiceResponseException выброшено «Не удалось найти часовой пояс с указанным идентификатором.»

Я попытался указать несколько разных идентификаторов, и все они привели к одному и тому же ответу. Я начинаю задаваться вопросом, отличаются ли сами идентификаторы TZI между платформами. Если так, кто-нибудь знает, как устранить различия?

1 Ответ

5 голосов
/ 14 марта 2011

Существует действительно разница между идентификаторами часовых поясов в двух системах. Я использовал следующий код, чтобы пройтись по часовым поясам в каждой системе и отметить различия для часовых поясов, которые меня интересовали:

    foreach (TimeZoneInfo tz in TimeZoneInfo.GetSystemTimeZones()){
                    Console.WriteLine("{0}, {1}, {2}, {3}", tz.Id,
                           tz.DisplayName, tz.StandardName, tz.DaylightName);

            }

Затем я использовал метод CreateCustomTimeZone для создания экземпляра, который имитировал настройки Windows:

    TimeZoneInfo newtz = TimeZoneInfo.CreateCustomTimeZone("Central Standard Time",
               tzi.BaseUtcOffset, "(GMT-06:00) Central Time (US & Canada)", 
               "Central Standard Time");

и я использовал этот экземпляр в сервисном вызове. Я предполагаю, что мне нужно было только правильно идентифицировать идентификатор (я также установил смещение, длинное имя и т. Д.).

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