Веб-часть браузера организации не отрисовка для пользователей Утверждений Windows

Симптомы

При использовании веб-части браузера организации на сайтах с включенной поддержкой Утверждений Windows веб-часть не передает никаких сведений. Одна и та же веб-часть позволяет правильно отрисовки пользователей с различными типами проверки подлинности утверждений.

Причина

Сведения об организации извлекаются из базы данных профилей приложения-службы профилей пользователей (UPSA). Требуемая информация хранится в UserProfile_Full таблице.

Пользователи Active Directory (добавляются вручную или синхронизируются автоматически) хранятся в базе данных профилей UPSA в формате NETBIOS\LogonName (Ex.: CONTOSO\TestUser1).

Однако при просмотре сайта утверждений контекст пользователя использует формат Claims NTName. (Ex.: i:0#.w| Contoso\TestUser1)

Веб-часть браузера организации затем делает поиск базы данных для пользователя 'i'0#.w| Contoso\TestUser1, который не доступен в базе данных, так как сведения о пользователе будут храниться с NTName 'CONTOSO\TestUser1'.

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

Решение

Управление веб-частью браузера организации отрисовывалось на странице функцией javascript CreateHierarchyChartControl. Эта функция не знает о том, что база данных профилей UPSA хранит пользователей Windows Claims с другим форматом именования. Чтобы обойти это, фрагмент кода ниже должен быть введен в источник сайта сразу после веб-части браузера организации.

<script type="text/javascript">  
 function CreateHierarchyChartControl(parentId, profileId, type, persistControlId) {  
  var i = profileId.indexOf("|");  
  var claimsmode = profileId.substr(i-1,1);  
  if((i >=0 ) & (claimsmode=="w"))  
  {  
   profileId = profileId.substr(i+1,profileId.length-i-1);  
   var initParam = profileId + ',' + type + ',' + persistControlId;  
   var host = document.getElementById(parentId);  
   host.setAttribute('width', '100%');  
   host.setAttribute('height', '100%');  
   Silverlight.createObject('/_layouts/ClientBin/hierarchychart.xap',  
    host,  
    'ProfileBrowserSilverlightControl',  
    {  
     top: '30',  
     width: '100%',  
     height: '100%',  
     version: '2.0',  
     isWindowless: 'true',  
     enableHtmlAccess: 'true'  
    },  
    {  
     onLoad: OnHierarchyChartLoaded  
    },  
     initParam,  
     null);  
    }  
  }  
</script>  

Метод 1. Добавление веб-части редактора контента на страницу

  1. Изменить страницу, содержаную веб-часть браузера организации.
  2. Добавьте веб-часть редактора контента сразу после веб-части браузера организации.
  3. Изменение контента.
  4. В ленте нажмите кнопку HTML/Edit HTML Source в вкладке Format Text.
  5. Скопируйте вклейку вышеуказанного кода.
  6. Скрыть Chrome и содержимое веб-части, чтобы она не появлялись на странице.

Метод 2. Изменение страницы в SharePoint Designer

Обратите внимание, что этот метод отсоединит страницу от определения сайта и поэтому должен использоваться с осторожностью.

  1. Откройте страницу в SharePoint Designer для редактирования.
  2. Изменение представления кода.
  3. В ленте щелкните Расширенный режим
  4. Найдите тег </SharePoint:EmbeddedFormField>.
  5. Вклеить вышеуказанный код сразу после тега.
  6. Сохраните изменения.
  7. Нажмите кнопку Да в окне Предупреждение страницы определения сайта.

Дополнительная информация

Обратите внимание, что невозможно переписать Html View веб-части браузера организации от клиента. Чтобы достичь этой цели, необходимо создать настраиваемую веб-часть с помощью Windows Claims.

Требуется дополнительная помощь? Перейдите в сообщество SharePoint.