Proveedor de reclamaciones personalizadas - Resultados que no se muestran en la selección de personas
-
28-09-2020 - |
Pregunta
He implementado un proveedor de reclamaciones personalizadas.Cuando ingrese un término en el recolector de personas, consulta al proveedor y devuelve una lista de objetos de recogida correspondiente.
La depuración muestra que el número correcto de objetos de selección se envía a SharePoint, pero el selector de personas no los muestra.Sin embargo, muestra una cadena que indica 'Mostrar los resultados X' donde X coincide con el número de resultados que debe mostrar.
My FillSearch Methody es el siguiente:
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);
}
El código que llena la lista de coincidencias lo hace, por lo que llama al siguiente 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;
}
¿Cómo puedo mostrarlo mostrar los resultados?
Solución
Esto resultó ser un problema de activación.Noté que entre los despliegues de mi código de proveedor personalizado, los métodos de FillClaimypes y FillClaimvalueTypes no se llamaban.
Desactivado al proveedor personalizado usando el SP2013ClailStools y reactivado.Se llamaron los métodos de FillClaimTypes y FillClaimvalueTytypes y todo comenzó a trabajar como se espera.
Otros consejos
Tuve tu mismo problema. Estaba en el método de FillClaimTypes. Hay una falla de la URL de esquema especificada en el método y la URL de esquema asignada a su reclamación. He resuelto asignar la misma URL de esquema. Aquí para más detalles http://www.lucacostante.com/item/41-custom-Claims-provider-Results-NOT-Showing-in-people-picker.html