SPWeb.CurrentUser.RegionalSettings.TimeZone имеет значение null - PullRequest
0 голосов
/ 31 января 2020

У меня есть код

SPWeb web = SPContext.Current.Web;
SPTimeZone tz = web.CurrentUser.RegionalSettings.TimeZone;

Отлично работает для 350 пользователей. Только 2 показывают ошибку во второй строке:

Ссылка на объект не установлена ​​для экземпляра объекта. У всех наших пользователей установлен часовой пояс в службе профилей. так же, как 2, что ошибка. У кого-нибудь есть идея, почему это так? Спасибо

1 Ответ

0 голосов
/ 03 февраля 2020

Я предлагаю вам снова запустить временное задание " Приложение-служба профилей пользователей - синхронизация языка и региона от профиля пользователя до SharePoint ", а затем проверить, работает ли оно.

И мы можем использовать API REST ниже, чтобы проверить свойства профиля 2 пользователей и проверить, является ли « SPS-TimeZone » нулевым.

/_api/SP.UserProfiles.PeopleManager/GetPropertiesFor(accountName=@v)?@v='domain\user'

Чтобы избежать проблемы в коде, я предлагаю Вы используете код ниже.

SPWeb web = SPContext.Current.Web;
SPTimeZone tz;
if (web.CurrentUser.RegionalSettings != null)
{
    tz = web.CurrentUser.RegionalSettings.TimeZone;
}
else if (web.RegionalSettings != null)
{
    tz = web.RegionalSettings.TimeZone;
}
else
{
    tz = SPRegionalSettings.GlobalTimeZones[web.Site.WebApplication.DefaultTimeZone];
}
...