Provedor de declarações personalizadas - Resultados não exibidos no People Picker

sharepoint.stackexchange https://sharepoint.stackexchange.com/questions/101888

  •  28-09-2020
  •  | 
  •  

Pergunta

Implementei um provedor de declarações personalizado.Quando insiro um termo no seletor de pessoas, ele consulta o provedor e retorna uma lista de objetos PickerEntity correspondentes.

A depuração mostra que o número correto de objetos PickerEntity está sendo enviado de volta ao SharePoint, mas o seletor de pessoas não os exibe.No entanto, ele mostra uma string informando 'Mostrando x resultados', onde x corresponde ao número de resultados que deve exibir.

Meu método FillSearch é o seguinte:

        protected override void FillSearch(Uri context, string[] entityTypes, string searchValue, string hierarchyNodeID, int maxCount, SPProviderHierarchyTree searchTree)
        {
            // Ensure that People Picker is asking for the type of entity that we 
            // return; site collection administrator will not return, for example.
            if (!EntityTypesContain(entityTypes, SPClaimEntityTypes.FormsRole)) { return; }

            List<PickerEntity> matches = new List<PickerEntity>();

            /*
            removed code that retrieves the matches
            */

            searchTree.AddEntities(matches);
        }

O código que preenche a lista de correspondências faz isso chamando o seguinte método

private PickerEntity GetPickerEntity(string claimValue)
{
    PickerEntity pickerEntity = CreatePickerEntity();

    pickerEntity.Claim = CreateClaim(BaseClaimType, claimValue, StringClaimValueType);
    pickerEntity.Description = ProviderDisplayName + ":" + claimValue;
    pickerEntity.DisplayText = claimValue;
    pickerEntity.EntityData[PeopleEditorEntityDataKeys.DisplayName] = claimValue;
    pickerEntity.EntityType = SPClaimEntityTypes.FormsRole;
    pickerEntity.IsResolved = true;

    return pickerEntity;
}

Como posso exibir os resultados?

Image showing people picker after custom provider is queried

Foi útil?

Solução

Isso acabou sendo um problema de ativação.Percebi que entre as implantações do meu código de provedor personalizado, os métodos FillClaimTypes e FillClaimValueTypes não estavam sendo chamados.

Desativei o provedor personalizado usando o SP2013ReivindicaçõesFerramentas e o reativou.Os métodos FillClaimTypes e FillClaimValueTypes foram chamados e tudo começou a funcionar conforme o esperado.

Outras dicas

Eu tive o mesmo problema.Estava no método FillClaimTypes.Há uma falta de correspondência entre o URL do esquema especificado no método e o URL do esquema atribuído à sua declaração.Resolvi atribuir o mesmo URL de esquema.Aqui para mais detalhes http://www.lucacostante.com/item/41-custom-claims-provider-results-not-showing-in-people-picker.html

Licenciado em: CC-BY-SA com atribuição
Não afiliado a sharepoint.stackexchange
scroll top