1

В EventReceiver я называю этот метод GetPernNr по пункту Добавлено:[SharePoint 2010] Значение из профиля пользователя настраиваемого поля возвращает Null

public override void ItemAdded(SPItemEventProperties properties) 
{ 
     SPSite site = properties.Web.Site; 
     using (SPWeb currentWeb = site.OpenWeb(properties.Web.ID)) 
     { 
      ..... 

      perNr = UserProfileUtils.GetPernNr(currentWeb, assignedTo.ToString()); 
      ..... 
     } 
} 

где assignedTo является SPUser.

public static string GetPernNr(SPWeb web, string accountName) 
{ 
     string perNr = string.Empty; 
     UserProfile upUser = null; 
     try 
     { 
      PermissionSet ps = new PermissionSet(System.Security.Permissions.PermissionState.Unrestricted); 
      ps.Assert(); 

      SPSecurity.RunWithElevatedPrivileges(delegate() 
      { 
       using (SPSite siteColl = new SPSite(web.Site.ID)) 
       { 
        SPServiceContext serviceContext = SPServiceContext.GetContext(siteColl); 
        UserProfileManager upm = new UserProfileManager(serviceContext); 
        if (upm.UserExists(accountName)) 
        { 
         upUser = upm.GetUserProfile(accountName); 
         if (upUser["PersonNumber"] != null) 
         { 
          perNr = upUser["PersonNumber"].Value.ToString(); 
         } 
        } 
       } 
      }); 
     } 
     catch (Exception ex) 
     { 
      .. 
     } 
     finally { System.Security.CodeAccessPermission.RevertAssert(); } 
     return perNr; 
    } 

Это странно, этот код работает, когда я пытаюсь получить значение из поля по умолчанию в UserProfile (Office, Manager, и т.д.). А также работает, когда я вызываю этот метод вне EventReceiver, но в моем случае upUser["PersonNumber"].Value возвращает null. Любая помощь будет очень благодарна

ответ

2

Вы проверили разрешение нестандартного разрешения в центральном админе.

Central Administration -> Изменить профиль пользователя Property - Настройки> Политика

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

+0

благодаря его работал. вы спасли мое время. –

+0

Спасибо. Теперь это работает. – Fulga

1

Вот шаги для SharePoint Server 2013:

Central Admin>Управления приложений>Управления приложений-служб>Вашего профиля Применение>Управления учетных записей пользователей Свойства

Выберите пункт «Изменить» в меню свойств.

Теперь В разделе "настройки политики":
Set По умолчанию настройки конфиденциальности:Все

 Смежные вопросы

  • Нет связанных вопросов^_^