0
webpart를 활성화하려고 할 때 오류가 발생합니다. 하나의 설정에서는 정상적으로 작동하지만 다른 설정에서는 실패합니다. 둘 다에있는 행정관. 그것이 목록을 만들 수 없기 때문에 실패한 것 같습니다. 오류 : Message : 값은 null 일 수 없습니다. 스택 추적 :SharePoint 목록을 만드는 중 오류가 발생했습니다 (권한 문제로 인한 것일 수 있음)
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;
}
이 오류에 따르면 'SPRoleAssignment'의 생성자는 null이며, 이는 'SPPrincipal'주체가 null임을 의미합니다. 즉, 'web .AssociatedOwnerGroup' 설정이 null 인 것 같습니다. –
소유자 그룹이 없으면이 문제를 해결할 수 있습니까? 아니면 목록을 만들기위한 전제 조건입니까? – Prabhu
@Swam i 아니오, 표준 상황에서는 소유자 그룹이 목록을 만들 필요가 없습니다. 사이트 그룹은 권한 처리에만 필요하며 권한을 할당하지 않아도 목록을 작성할 수 있습니다. 이 예제에서리스트의 생성을 막는 이유는 코드가 생성을 마무리 짓는'list.Update()'문장에 결코 도달하지 않기 때문입니다. –