2010-06-10 1 views
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; 
} 

답변

2

문제의 웹 실제로 관련 소유자 그룹 (이 있는지 확인 ... ClientRequestHandler.CreateList (에서 Microsoft.Sharepoint.SPRoleAssignment..ctor 에서 /_layouts/groups.aspx -> 설정 -> 그룹 설정)

+1

이 오류에 따르면 'SPRoleAssignment'의 생성자는 null이며, 이는 'SPPrincipal'주체가 null임을 의미합니다. 즉, 'web .AssociatedOwnerGroup' 설정이 null 인 것 같습니다. –

+0

소유자 그룹이 없으면이 문제를 해결할 수 있습니까? 아니면 목록을 만들기위한 전제 조건입니까? – Prabhu

+0

@Swam i 아니오, 표준 상황에서는 소유자 그룹이 목록을 만들 필요가 없습니다. 사이트 그룹은 권한 처리에만 필요하며 권한을 할당하지 않아도 목록을 작성할 수 있습니다. 이 예제에서리스트의 생성을 막는 이유는 코드가 생성을 마무리 짓는'list.Update()'문장에 결코 도달하지 않기 때문입니다. –