Aiuto con l'errore di creare elenco SharePoint (probabilmente a causa di problemi di privilegio)
-
26-09-2019 - |
Domanda
Ricevo un errore quando si cerca di attivare un webpart. Attiva bene in una messa a punto, ma non riesce in uno diverso. Administrator in entrambi. Sembra che fallisce perché non è in grado di creare l'elenco. L'errore è: Messaggio: Il valore non può essere null. Analisi dello stack: a Microsoft.Sharepoint.SPRoleAssignment..ctor a ClientRequestHandler.CreateList (...
private static void CreateLists()
{
try
{
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite site = SPContext.Current.Site)
{
using (SPWeb web = site.RootWeb)
{
string listName = LIST_NAME;
bool listExist = ContainList(web, listName);
if (!listExist)
{
AddFieldDelegate _delegate = new AddFieldDelegate(AddAttachmentFields);
SPList list = CreateList(web, listName, _delegate);
RegisterList(web, list, KEY);
}
}
}
});
}
catch (Exception ex)
{
throw new Exception(String.Format("Message: {0} Stack Trace: {1}", ex.Message, ex.StackTrace.ToString()));
}
} private static SPList CreateList(SPWeb web, string listName, AddFieldDelegate _delegate)
{
web.AllowUnsafeUpdates = true;
SPListTemplateType genericList = new SPListTemplateType();
genericList = SPListTemplateType.GenericList;
Guid listGuid = web.Lists.Add(listName, "List", genericList);
SPList list = web.Lists[listGuid];
list.Hidden = true;
SPView view = _delegate(list);
view.Update();
//Remove permissions from the list
list.BreakRoleInheritance(false);
//Make site owners the list administrators
SPPrincipal principal = web.AssociatedOwnerGroup as SPPrincipal;
SPRoleAssignment assignment = new SPRoleAssignment(principal);
assignment.RoleDefinitionBindings.Add(web.RoleDefinitions.GetByType(SPRoleType.Administrator));
list.RoleAssignments.Add(assignment);
//update list changes
list.Update();
return list;
}
Soluzione
Assicurarsi che il web in questione ha in realtà un gruppo proprietario associato (/_layouts/groups.aspx -> Impostazioni -> costituire gruppi)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow