Веб-часть браузера организации не отрисовка для пользователей Утверждений 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. Добавление веб-части редактора контента на страницу
- Изменить страницу, содержаную веб-часть браузера организации.
- Добавьте веб-часть редактора контента сразу после веб-части браузера организации.
- Изменение контента.
- В ленте нажмите кнопку HTML/Edit HTML Source в вкладке Format Text.
- Скопируйте вклейку вышеуказанного кода.
- Скрыть Chrome и содержимое веб-части, чтобы она не появлялись на странице.
Метод 2. Изменение страницы в SharePoint Designer
Обратите внимание, что этот метод отсоединит страницу от определения сайта и поэтому должен использоваться с осторожностью.
- Откройте страницу в SharePoint Designer для редактирования.
- Изменение представления кода.
- В ленте щелкните Расширенный режим
- Найдите тег </SharePoint:EmbeddedFormField>.
- Вклеить вышеуказанный код сразу после тега.
- Сохраните изменения.
- Нажмите кнопку Да в окне Предупреждение страницы определения сайта.
Дополнительная информация
Обратите внимание, что невозможно переписать Html View веб-части браузера организации от клиента. Чтобы достичь этой цели, необходимо создать настраиваемую веб-часть с помощью Windows Claims.
Требуется дополнительная помощь? Перейдите в сообщество SharePoint.